当两个pandas数据框的索引方式不同时,将其添加到另一个pandas数据框中

时间:2018-05-29 12:27:21

标签: python pandas dataframe

我是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。我怎么能这样做(以性能最佳的方式)?

1 个答案:

答案 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'])