我是Python新手。我有两个索引不同的 Pandas 数据框。我想将一列从一个列复制到另一个列。 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
数据框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 并在 dataframe 2 中查找索引中的匹配 id,并将“数据”列复制到 dataframe1。我怎样才能做到这一点(以性能最佳的方式)?
最佳答案
首先匹配数据需要相同的类型,所以如果得到不同的:
print (df1['index'].dtype)
int64
print (df2.index.dtype)
object
有 2 种可能的解决方案 - 将索引转换为整数:
df2.index = df2.index.astype(int)
或列到字符串:
df1['index'] = df1['index'].astype(str)
然后使用 map
按 df2
中的 data
列:
df1['data'] = df1['index'].map(df2['data'])
或者,如果需要从 df2 添加多列(例如在实际数据中),请使用 join
:
df1 = df1.join(df2, on=['index'])
关于python - 当两个数据帧的索引不同时,将一个 pandas 数据帧中的一列添加到另一个数据帧中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50584414/