-------------------------------
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'
非常感谢任何帮助。
答案 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)