Python 当两个数据帧的索引不同时,将列从一个数据帧添加到另一个数据帧
我是python新手。我有两个不同索引的数据帧。我想把一列从一列复制到另一列。 Dataframe 1:保存每个图像所属的id和类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和数据列中的图像数据
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'])