我是python的新手。我有两个以不同方式编制索引的pandas数据帧。我想将列从一个列复制到另一个。 数据帧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,并在索引中查找数据帧2以获取匹配的ID,并将“data”列复制到dataframe1。我怎么能这样做(以性能最佳的方式)?
答案 0 :(得分:2)
首先匹配数据需要相同的类型,所以如果变得不同:
print (df1['index'].dtype)
int64
print (df2.index.dtype)
object
有两种可能的解决方案 - 通过以下方式将索引转换为整数:
df2.index = df2.index.astype(int)
或列到字符串:
df1['index'] = df1['index'].astype(str)
然后在data
中的df2
栏中使用map
:
df1['data'] = df1['index'].map(df2['data'])
如果需要添加df2
中的多个列(例如在实际数据中),请使用join
:
df1 = df1.join(df2, on=['index'])