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
我们的想法是计算第一行和第二行之间的差异,并将该值存储在第二行中(类似于 .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