python - 逐一获取一个df列与另一个df列中的所有值之间的绝对值差,为pandas中的每个结果创建一个新列
问题描述
这可能很简单,但我相对较新,无法弄清楚正确的搜索词。
我有两个数据框,示例如下。我想从 df2 中获取 col_add 中的所有值,并获取 df1 col_1 中所有值的 abs 值差异,为每组结果添加一个新列。
df1 = pd.DataFrame({'col_1':[1,2,3], 'col_2':['d','e','f']})
df1
col_1 col_2
0 1 d
1 2 e
2 3 f
df2 = pd.DataFrame({'col_add':[4,2,1],})
df2
col_add
0 4
1 2
2 1
期望的结果如下所示:
col_1 col_2 res_0 res_1 res_2
0 1 d 3 1 0
1 2 e 2 0 1
2 3 f 1 1 2
不确定是否有有效的方法来做到这一点?我想使用它的数据真实数据集有 100 到 500 行。任何帮助将非常感激!
解决方案
Series.to_numpy
通过广播将列转换为 numpy 2d array
,因此可以传递给新的DataFrame
并添加到原始的:
arr = np.abs(df1['col_1'].to_numpy()[:, None] - df2['col_add'].to_numpy())
df = df1.join(pd.DataFrame(arr).add_prefix('res_'))
print (df)
col_1 col_2 res_0 res_1 res_2
0 1 d 3 1 0
1 2 e 2 0 1
2 3 f 1 1 2
推荐阅读
- java - 给定一个创建新实例的图像阅读器,我可以将格式指定为 RAW12 或任何类型的 RAW 并将其转换为 png 图像吗?
- html - 为什么尽管是 ap 标签,但线路没有中断?
- typescript - 继续生成 ID,直到它在数据库中不存在
- apache - 将所有子域 URL 重定向到匹配的主域 URL - 重定向页面路径不起作用
- python - 如何替换熊猫数据框中某个字符的所有实例
- javascript - 使用 Javascript 将 HTML 表单中的 2 个输入相乘
- postgresql - 在 postgres 中为 time 生成系列结果的正确方法
- python - 如何颜色对齐可视化?
- javascript - 如何制作一个调用 setUserContext 的可重用函数?React Hooks 使用上下文
- javascript - 我想添加新任务并对其进行编辑。当我尝试更新 1 个任务时,之前单击编辑图标的所有任务都将得到更新。为什么这样?