【发布时间】:2018-04-05 10:41:04
【问题描述】:
在pandas 中,我必须包含某些我想合并两个dataframes 的列,
result = df_a.merge(df_b[['A', 'B', 'C']], how='left', on=['A', 'B'])
所以如果我想在 A 和 B 列上合并 df_a 和 df_b,我还必须在 result dataframe 中包含 A 和 B,但是我真正想要的只是列C。我想知道是否有办法只在merge 中包含C。
合并后的示例结果数据框,
year_x code_x year_y code_y id
2000 005 2000.00 005 1
2001 006 2001.00 006 2
2002 007 2002.00 007 3
df_a 和df_b 都包含year 和code,我只需要df_b 中的id,但我必须在code 和year 上使用merge。
最初year 在df_a 和df_b 中都是int64 dtype,但在合并后year_y 变成了float,这也令人困惑。
如果我在merge之后dropcode_y和year_y,我可能不得不将renamecode_x和year_x回code和year,如果我可以首先消除重复的列。
【问题讨论】:
-
合并后为什么不
drop呢 -
@Wen 想知道是否可以在
merge中完成合并后无需进行一些清理。 -
你能添加示例数据框吗
-
之前有很多这样的问题,通常使用合并或查询后删除。如果您添加示例数据,我们可以想到更好的替代方案
-
这会有帮助吗?
df1[['code','year','id']].merge(df2[['code','year']])['id']
标签: python-3.x pandas dataframe merge