使用 python 中的 window 比较数据框中具有不同频率的 2 列

Compare 2 columns with different frequencies in a data frame using a window in python

我想比较具有不同频率的数据框的 2 列。在最大频率期间,频率较小的列填充相同的值,例如,如果我们的第 1 列频率比第 2 列低 4 倍:

column1 column2
1       4
1       3
1       8
1       6
2       7
2       8
2       5
2       10
3       12
3       7
3       0
3       3

我们可以看到第 1 列的值是如何重复的。我想做的是使用大小为 4 的居中 window 进行比较(因为 frec2/frec1 = 4)并在此比较中获得最大值。所以我们必须获得 3 个值,因为频率最低的列中只有 3 个不同的值。结果必须是:

1 compared with 4,3,8,6
2 compared with 7,8,5,10
3 compared with 12,7,0,3

并且它们得到绝对值的最大差异,在这种情况下三个结果值将是:

7 (abs(1 - 8))
8 (abs(2 - 10))
9 (abs(3 - 12))

我如何使用由这两列组成的通用数据框来执行此操作? 提前谢谢你。

您可以获得 column1 减去 column2 的绝对值。然后按 column1 的唯一值分组,并为 column1 的每个唯一值获取这些绝对值的最大值,如下所示:

df['column1'].sub(df['column2']).abs().groupby(df['column1']).max()

结果:

column1
1    7
2    8
3    9
dtype: int64

如果您希望结果显示为数据框,您可以使用:

df['column1'].sub(df['column2']).abs().groupby(df['column1']).max().reset_index(name='max_diff')

(我们将新列命名为 max_diff):

结果:

   column1  max_diff
0        1         7
1        2         8
2        3         9