简单合并DataFrames

时间:2016-04-13 08:30:08

标签: python pandas

我有一个相对简单的问题。两只熊猫数据帧:

    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

我承认我可能错过了一些关于大熊猫的小事,或试图以错误的方式解决问题。

2 个答案:

答案 0 :(得分:4)

我认为您可以将参数left_indexright_indexon添加到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之前指定一个pandas0.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_indexright_index保持一致的索引,以下是它的工作原理:

>>> pd.merge(a,b, on='a', left_index=True)
     a  c  b
one  1  3  2
>>> 
相关问题