将数据框A的列添加为数据框B的列

时间:2013-10-29 23:39:48

标签: python-2.7 pandas dataframe

-------------------------------
dfA:
-------------------------------
                special_name
site_id                       
A               Apple
B               Banana

-------------------------------
dfB:
-------------------------------
              42      41
site_id                             
A           20944   20356
B           41795   42823

我需要在dfB数据帧中添加特殊名称列,以便结果如下:

              42      41    special_name
site_id                             
A           20944   20356     Apple
B           41795   42823     Banana

我试过了:

dfB['special_name'] = dfA['special_name']

TypeError: incompatible index of inserted column with frame index

我也尝试过尽可能多的merge,concat和join变体。它们都有错误,例如:

dfB = dfB.join(dfA, on='site_id')

KeyError: u'no item named site_id'

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您使用join会导致错误,因为site_id在这种情况下不完全是列 - 它是DataFrame的索引。你应该可以使用:

dfB = dfB.join(dfA)

默认情况下,join假定您要在其索引上加入两个帧。通过使用on=,它开始在DataFrame的列中查找site_id

或者,您可以使用merge

dfB = pandas.merge(dbA, dbB, left_index=True, right_index=True)