想象我有熊猫以下DataFrames:如何避免Pandas.Merge
In [7]: A= pd.DataFrame([['foo'],['bar'],['quz'],['baz']],columns=['key'])
In [8]: A['value'] = 'None'
In [9]: A
Out[9]:
key value
0 foo None
1 bar None
2 quz None
3 baz None
In [10]: B = pd.DataFrame([['foo',5],['bar',6],['quz',7]],columns= ['key','value'])
In [11]: B
Out[11]:
key value
0 foo 5
1 bar 6
2 quz 7
In [12]: pd.merge(A,B, on='key', how='outer')
Out[12]:
key value_x value_y
0 foo None 5
1 bar None 6
2 quz None 7
3 baz None NaN
但我要的是(基本上避免了重复列):
key value
0 foo 5
1 bar 6
2 quz 7
3 baz NaN
我猜想我可以把输出并删除_x
值,并重新命名_y
但是,似乎是矫枉过正。在SQL上这将是微不足道的。
编辑:
约翰为recomended使用:
In [1]: A.set_index('key', inplace=True)
A.update(B.set_index('key'), join='left', overwrite=True)
A.reset_index(inplace=True)
这工作和做什么,我提出的要求。
的可能的复制[?如何更新大熊猫现有数据帧(http://stackoverflow.com/questions/18726497/how:
第二溶液还可以与更新的索引使用-to-更新现有的数据帧功能于熊猫) – root
@root它们是类似的问题,但是这个问题专门询问如何键列上结合起来。 – johnchase
@johnchase:我挂的问题,专门用一个键列合并交易,实际上是在更普遍的,因为它有两个键列,而不是一个交易。同样的方法适用于在单个键列上组合。查看接受答案的编辑。 – root