我有一个相对简单的问题。两只熊猫数据帧:
a b
one 1 2
和
a c
one 1 3
我想要
a b c
one 1 2 3
我已经尝试了pd.join和pd.concat,它们给了我重复的行或列,以及pd.merge,它合并了数据但丢失了索引名称。
<!-- language: Python -->
a=pd.DataFrame({'a':{'one':1},'c':{'one':3}})
b=pd.DataFrame({'a':{'one':1},'b':{'one':2}})
pd.merge(a,b)
pd.merge(a,b)
a c b
0 1 3 2
我承认我可能错过了一些关于大熊猫的小事,或试图以错误的方式解决问题。
答案 0 :(得分:4)
我认为您可以将参数left_index
,right_index
和on
添加到merge
,然后添加sort_index
:
print pd.merge(a,b, left_index=True, right_index=True, on='a').sort_index(axis=1)
a b c
one 1 2 3
有趣的是,在pandas
版本0.18.0
中,您只能在left_index
版本right_index
之前指定一个pandas
或0.17.2
错误:
print pd.merge(a,b, left_index=True, on='a').sort_index(axis=1)
a b c
one 1 2 3
print pd.merge(a,b, right_index=True, on='a').sort_index(axis=1)
a b c
one 1 2 3
答案 1 :(得分:1)
您可以使用pd.merge并指定要与left_index
或right_index
保持一致的索引,以下是它的工作原理:
>>> pd.merge(a,b, on='a', left_index=True)
a c b
one 1 3 2
>>>