我有以下问题:我有两个不同长度的Pandas数据框,其中一些行和列具有相同的值,另一些则不同,如下所示:
df1: df2:
Column1 Column2 Column3 ColumnA ColumnB ColumnC
0 a x x 0 c y y
1 c x x 1 e z z
2 e x x 2 a s s
3 d x x 3 d f f
4 h x x
5 k x x
我现在要做的是合并这两个 Dataframe ,这样,如果ColumnA和Column1具有相同的值,则df2中的行将被追加到df1中的相应行,如下所示:
df1:
Column1 Column2 Column3 ColumnB ColumnC
0 a x x s s
1 c x x y y
2 e x x z z
3 d x x f f
4 h x x NaN NaN
5 k x x NaN NaN
我知道合并是可行的
df1.merge(df2,left_on='Column1', right_on='ColumnA')
但是这个命令删除了两个文件中Column1和ColumnA中所有不相同的行。相反,我希望将这些行保留在df1中,并在其他行具有来自df2的值的列中将NaN赋给它们,如上所示。在Pandas中有没有平滑的方法可以做到这一点?
4条答案
按热度按时间iqih9akk1#
您可以在此处阅读文档:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html
您要查找的是左联接。默认选项是内联接。您可以通过传递不同的how参数来更改此行为:
7xllpg7q2#
看起来您正在查找类似左连接的内容。请查看以下示例是否有帮助:http://pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html#left-outer-join
基本上可以将一个名为
how='left'
的参数传递给merge()
euoag5mw3#
您可以简单地将merge与using on和list一起使用
有关详细信息,请访问link
s4n0splo4#
用“concat”怎么样?
Dataframe列内容无需相同/匹配,它将追加。
输出为: