首页 > 解决方案 > 在熊猫中从一个数据帧到另一个数据帧的每一行迭代差异

问题描述

我有两个数据集:df1 和 df2,每个数据集都有一个名为“value”的列,包含 10 条记录。目前我有:

df = df1.value - df2.value

但此代码仅输出 10 行(如预期的那样)。如何迭代所有行的差异,而不仅仅是相应行索引之间的差异(并获得一个包含 100 条记录的表)?

提前致谢!

标签: pandasdataframediff

解决方案


您可以 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


推荐阅读