【问题标题】:Pandas: sum next 5 items of dataframe after some specific item熊猫:在某个特定项目之后总结接下来的 5 项数据框
【发布时间】:2022-11-26 21:04:44
【问题描述】:
我有 DataFrame,它看起来只是一个数字列表:
| original |
option 1 |
option 2 |
| 1 |
NaN |
NaN |
| -1 |
NaN |
9 |
| 4 |
NaN |
NaN |
| -1 |
NaN |
15 |
| 6 |
9 |
NaN |
| 7 |
NaN |
NaN |
| 2 |
15 |
NaN |
| 3 |
NaN |
NaN |
| 0 |
NaN |
NaN |
我需要在每个负值之后对 df 的下 3 个值求和 - 请参阅“option1”或“option2”列。
如果我只得到求和结果,也就是一个单独的数据结构,看起来像 [9, 15],它也可以工作。
有什么想法吗?
【问题讨论】:
标签:
python
pandas
dataframe
【解决方案1】:
一种方法如下:
import pandas as pd
data = {'original': {0: 1, 1: -1, 2: 4, 3: -1, 4: 6, 5: 7, 6: 2, 7: 3, 8: 0}}
df = pd.DataFrame(data)
n = 3
df['option 1'] = (df['original'].rolling(n).sum()
.where(df['original'].shift(n).lt(0))
)
df['option 2'] = df['option 1'].shift(-n)
print(df)
original option 1 option 2
0 1 NaN NaN
1 -1 NaN 9.0
2 4 NaN NaN
3 -1 NaN 15.0
4 6 9.0 NaN
5 7 NaN NaN
6 2 15.0 NaN
7 3 NaN NaN
8 0 NaN NaN
解释