Skip to main content
 首页 » 编程设计

python之计算特定 row_pandas 之前和之后的行之间的差异

2025年05月04日19yxwkf

我想找出特定行之前和之后的行之间的区别。具体来说,我有以下数据集:

 Number of rows       A              
 1                    4              
 2                    2              
 3                    2              
 4                    3              
 5                    2     

我应该得到以下数据:

 Number of rows      A        B 
 1                   4        NaN (since there is not row before this row) 
 2                   2        2   (4-2) 
 3                   2       -1   (2-3) 
 4                   3        0   (2-2) 
 5                   2        NaN (since there is not row after this row) 

如您所见,B 列中的每一行等于 A 列中前后行之间的差值。例如,B 列中的第二行等于 A 列中第一行中的值与 A 列中的值之间的差值A 列中的第三行。重要的一点:我不需要只有前一个和后一个。我应该找出前两行和后两行之间的区别。我的意思是 B 列第 23 行中的值等于 A 列第 21 行中的值与 A 列第 25 行中的值之间的差值。为简单起见,我使用了前面和后面的行。 我希望我能解释一下。

请您参考如下方法:

看来你需要一个居中 rolling window 。您可以使用 arg center=True

指定
>>> df.A.rolling(3, center=True).apply(lambda s: s[0]-s[-1]) 
 
0    NaN 
1    2.0 
2   -1.0 
3    0.0 
4    NaN 
Name: A, dtype: float64 

这种方法适用于任何窗口。请注意,这是一个居中窗口,因此窗口的大小必须为 N+N+1(其中 N 是lookback 和 lookforward 行,你加 1 来计算中间的值)。因此,一般公式为

window = 2*N + 1 

如果您需要前 2 行和后 2 行,则 N = 2。如果您需要 5 和 5,N=5(和 window = 11)等。apply lambda 保持不变。