【发布时间】:2017-06-15 08:50:34
【问题描述】:
我有这两个数据框:
import pandas as pd
df1 = pd.DataFrame({'A':[1,2,4,6]})
df2 = pd.DataFrame({'A':[1,2,3,6]})
df1
Out[27]:
A
0 1
1 2
2 4
3 6
df2
Out[28]:
A
0 1
1 2
2 3
3 6
我想以保留两列的方式合并它们,不考虑索引而连接公共值,并且在另一行中保留唯一值和填充值,也就是说,我想要这个结果:
A_x A_y
0 1.0 1.0
1 2.0 2.0
2 NaN 3.0
3 4.0 NaN
4 6.0 6.0
我试过了
pd.merge(df1,df2,on=['A'],how='outer')
pd.concat([df1,df2],axis=1,join='outer')
但是这两个没有产生预期的结果。我用不同的选择尝试过它们,但没有运气。
我还研究了其他方法,例如 append 和 assign,但似乎没有一个提供执行此操作的功能。
我觉得这是一个常见的操作,应该有一个简单直接的解决方案,所以我可能会忽略一些明显的东西。
你能告诉我它是怎么做的吗?
【问题讨论】:
-
它可能不适合您的需要,但如果您想保留两列以便比较和对比重叠部分,您可能对
indicatorkeyword argument 对merge感兴趣。它添加了一个带注释的列,显示该行在合并之前是否存在于左侧、右侧或两列中。 -
这是很有价值的信息,谢谢。
标签: python python-2.7 pandas join merge