python - 当两个数据帧的索引不同时,将一个 pandas 数据帧中的一列添加到另一个数据帧中

标签 python pandas dataframe

我是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)

然后使用 mapdf2 中的 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/

相关文章:

python - 当人们在谈论正则表达式时说对象时,他们是什么意思(Python)

python - skimage转换为灰度,生成黑色图像

python - 如何捕获从 python 子进程运行的 git clone 命令的输出

python - Pandas 行计算

python - 如何在Python中的列表的每个元素中添加常量字符串?

python - 创建列的内存高效方法,该列指示来自一组列的值的唯一组合

python - 来自 Flask 的 `int` 的 `jsonify` 类型错误

python - 在python中的networkx图中查找最大加权边

python - 确定 pandas HDF 文件中 DataFrame 的格式

python - Spark 和 Ipython 中将非数字特征编码为数字的问题