[英]Merging two dataframes on similar columns
我有以下两个数据框,它们是大型数据集的片段:
df1:
date key number
2000 1 50
2001 1 40
2000 2 600
2001 2 650
df2:
key key2
1 A
2 B
3 C
我想将key2列添加到与“ key”匹配的df1列中。 结果应如下所示:
date key number key2
2000 1 50 A
2001 1 40 A
2000 2 600 B
2001 2 650 B
为此,我使用以下命令:
result = pd.merge(df1, df2, how="left", on="key")
但是,这也将key2“ C”添加到数据集,我不想添加它。 我只希望基于df1的键将变量key2附加到df1。 df2中与df1中的键不匹配的信息应被删除。 因此,我的结果数据框应比df1多包含一列,并且行数应准确。
有人知道为什么合并“ left”在这里不起作用,因为如果我这样运行代码,我的结果数据帧将有1列(按需要),但比df1还要多,这是我不想要的。
您可以使用pd.Series.replace
:
In [242]: df1['key2'] = df1.key.replace(dict(df2.values)); df1
Out[242]:
date key number key2
0 2000 1 50 A
1 2001 1 40 A
2 2000 2 600 B
3 2001 2 650 B
您也可以使用df.merge
为合并指定left_on
和right_on
列:
In [251]: df1.merge(df2, left_on='key', right_on='key')
Out[251]:
date key number key2
0 2000 1 50 A
1 2001 1 40 A
2 2000 2 600 B
3 2001 2 650 B
实际上,您可以省略关键字参数, pd.merge(df1, df2)
也适用(例如您的示例)。
感谢您的答复。 我实际上是通过以下方式完成的:
result= df1.join(df2, how="left", on="key", lsuffix='_', rsuffix='_')
我不知道为什么这不会产生与合并相同的结果...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.