Python 当两个数据帧的索引不同时,将列从一个数据帧添加到另一个数据帧

Python 当两个数据帧的索引不同时,将列从一个数据帧添加到另一个数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我是python新手。我有两个不同索引的数据帧。我想把一列从一列复制到另一列。 Dataframe 1:保存每个图像所属的id和类 ID index class 0 10472 10472 0 1 7655 7655 0 2 6197 6197 0 3 9741 9741 0 4 9169 9169 0 Dataframe 2:保存索引中的图像id和数据列中的图像数据

我是python新手。我有两个不同索引的数据帧。我想把一列从一列复制到另一列。 Dataframe 1:保存每个图像所属的id和类

      ID  index  class
0  10472  10472      0
1   7655   7655      0
2   6197   6197      0
3   9741   9741      0
4   9169   9169      0
Dataframe 2:保存索引中的图像id和数据列中的图像数据

                                                    data
index                                                   
5882   [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
360    [[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0...
1906   [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
3598   [[[255, 255, 255, 0], [232, 232, 247, 25], [34...
231    [[[255, 255, 255, 0], [234, 234, 234, 0], [57,...

我想遍历dataframe1,提取图像id,在索引中查找DataFrame2中匹配的id,并将“data”列复制到dataframe1。我如何才能做到这一点(以性能最佳的方式)?

首先,因为匹配数据需要相同的类型,所以如果得到不同的数据:

print (df1['index'].dtype)    
int64
print (df2.index.dtype)   
object
有两种可能的解决方案-通过以下方式将索引转换为整数:

df2.index = df2.index.astype(int)
或列到字符串:

df1['index'] = df1['index'].astype(str)

然后按
df2
中的
数据列使用:

df1['data'] = df1['index'].map(df2['data']) 
或者,如果需要从
df2
添加多个列(例如,在真实数据中),请使用:


我尝试了您的第一个建议,但它对所有值都返回“NaN”:什么是
print(df1.dtypes)
print(df2.index)
?需要相同的类型,
整数
字符串
这是返回的内容(按顺序):ID int64 index int64 class int64 data object dtype:object index([u'0',u'1',u'10',u'100',u'1000',u'10000',u'10001',u'10002',u'10003',u'10004',u'9990',u'9991',u'9992',u'9994',u'9993',u'9995',u'9996',u'9997',u'9999',dtype='object name=u'index',length=12533)很抱歉设置了格式,但看起来df2索引的类型是u'index'@Praveen-也添加到了答案:)谢谢。
df1 = df1.join(df2, on=['index'])