pandas - 在熊猫中从一个数据帧到另一个数据帧的每一行迭代差异
问题描述
我有两个数据集:df1 和 df2,每个数据集都有一个名为“value”的列,包含 10 条记录。目前我有:
df = df1.value - df2.value
但此代码仅输出 10 行(如预期的那样)。如何迭代所有行的差异,而不仅仅是相应行索引之间的差异(并获得一个包含 100 条记录的表)?
提前致谢!
解决方案
您可以 pandas.DataFrame.merge
使用how = 'cross'
(笛卡尔积),然后使用以下方式获得列差异pandas.DataFrame.diff
:
#setup
df1 = pd.DataFrame({"value":[7,5,4,8,9]})
df2 = pd.DataFrame({"value":[1,7,9,5,3]})
df2.merge(df1, "cross", suffixes=['x','']).diff(axis = 1).dropna(1)
输出
value
0 6
1 4
2 3
3 7
4 8
5 0
6 -2
7 -3
8 1
9 2
10 -2
11 -4
12 -5
13 -1
14 0
15 2
16 0
17 -1
18 3
19 4
20 4
21 2
22 1
23 5
24 6
推荐阅读
- python - 使用输入提供的名称创建文本文件时出现问题
- java - 如何修复错误“线程“主”java.util.IllegalFormatConversionException:d!= java.lang.String中的异常”
- android - 排球请求重试未按预期工作
- haskell - 无法阴谋集团安装 hunit
- javascript - 有没有办法禁用 React 的“Invalid event handler property `onclick`”警告?
- python - 如何在 Python 中创建混淆矩阵
- c# - 将 XAML 页面呈现到图像
- python - 什么时候安装了 python 中的包?
- drools - 流口水比 EasyScoreCalculator [OptaPlanner] 慢得多
- javascript - 问题/错误 'Property''xs' 在带有 tensorflow.js 的 Angular 项目中的类型 'TensorContainer' 上不存在