Pandas:如何在计算两行之间的差异和跳过下一行的计算之间顺序交替?

Pandas: how to sequentially alternate between calculating difference between two rows and skip calculation for the next row?

我们的想法是计算第一行和第二行之间的差异,并将该值存储在第二行中(类似于 .diff())。

然后,跳过第二行和第三行之间的计算,将0.

然后,对 Dataframe 中的所有行重复此过程。

例如:

     A
0    100
1    101
2    103
3    107
4    110
5    120
6    150    
7    170

df['B'] = df['A'].diff()

     A       B
0    100     Nan
1    101     1
2    103     2
3    107     4
4    110     3
5    120     10
6    150     30
7    170     20

我想实现的是:

     A       B
0    100     0
1    101     1
2    103     0
3    107     4
4    110     0
5    120     10
6    150     0
7    170     20

关于如何使用 Pandas(或 Python)完成此操作的任何建议?

你可以mask结果

df['B'] = df['A'].diff().mask(df.index%2!=1,0)
df
Out[469]: 
     A     B
0  100   0.0
1  101   1.0
2  103   0.0
3  107   4.0
4  110   0.0
5  120  10.0
6  150   0.0
7  170  20.0

或者我们groupby

df['B'] = df.groupby(df.index//2).A.diff().fillna(0)
Out[472]: 
0     0.0
1     1.0
2     0.0
3     4.0
4     0.0
5    10.0
6     0.0
7    20.0
Name: A, dtype: float64