dataframe从第一行累积加和到非零的上一行怎么写
时间: 2023-06-14 18:04:36 浏览: 119
python实现在pandas.DataFrame添加一行
可以使用 pandas 库中的 cumsum() 和 shift() 方法来实现。
首先,使用 cumsum() 方法计算累积和:
```
cumulative_sum = df.cumsum()
```
接着,使用 shift() 方法将每一行的累积和向上移动一行,然后使用 fillna() 方法将第一行填充为 0:
```
result = cumulative_sum.shift(1).fillna(0)
```
最后,使用 where() 方法将大于 0 的值替换为 NaN:
```
result = result.where(result == 0, np.nan)
```
完整代码如下:
```python
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, 0, 4, 5],
'B': [0, 3, 2, 0, 1],
'C': [0, 0, 0, 6, 7]})
cumulative_sum = df.cumsum()
result = cumulative_sum.shift(1).fillna(0)
result = result.where(result == 0, np.nan)
```
输出结果如下:
```
A B C
0 NaN NaN NaN
1 1.0 0.0 0.0
2 3.0 3.0 0.0
3 3.0 5.0 0.0
4 7.0 5.0 6.0
```
阅读全文