1 回答
TA贡献1803条经验 获得超6个赞
看起来你可以放弃 Nan 并在 groupby 上滚动:
df['Sum'] = df[df.Val.notna()].groupby('Name')['Val'].transform(lambda x: x.rolling(4).sum())
# Then `ffill` on groupby of the full data
df['Sum'] = df.groupby('Name')['Sum'].ffill()
输出:
Date Name Val Sum
0 11.1 A NaN NaN
1 11.1 B NaN NaN
2 11.1 C NaN NaN
3 12.1 A 1 NaN
4 12.1 B 2 NaN
5 12.1 C 4 NaN
6 13.1 A NaN NaN
7 13.1 B NaN NaN
8 13.1 C NaN NaN
9 12.2 A 2 NaN
10 12.2 B 2 NaN
11 12.2 C 3 NaN
12 13.2 A NaN NaN
13 13.2 B NaN NaN
14 13.2 C NaN NaN
15 14.2 A 4 NaN
16 14.2 B 2 NaN
17 14.2 C 4 NaN
18 15.2 A NaN NaN
19 15.2 B NaN NaN
20 15.2 C NaN NaN
21 16.2 A 7 14
22 16.2 B 2 8
23 16.2 C 4 15
24 17.2 A NaN 14
25 17.2 B NaN 8
26 17.2 C NaN 15
27 18.2 A NaN 14
28 18.2 B NaN 8
29 18.2 C NaN 15
添加回答
举报