为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 最后四个值的总和而不是 nan 值

Pandas 最后四个值的总和而不是 nan 值

烙印99 2023-10-06 19:31:39
我有一个非常大的数据框,想要添加一个由另一列的最后四个非 Nan 值组成的列。删除 Nan 行不是一个选择。我想到了一些使用df.apply(pd.Series.last_valid_index)并将其与上滚动窗口结合起来,但也许有人有更好的选择。在所需输出下方:(将 ... 行视为 Nan)Date   Name  Val  Sum11.1   A     Nan  Nan11.1   B     Nan  Nan11.1   C     Nan  Nan12.1   A     1    Nan12.1   B     2    Nan12.1   C     4    Nan13.1   A     Nan  Nan13.1   B     Nan  Nan13.1   C     Nan  Nan...    ...   ...  ... 12.2   A     2    Nan12.2   B     2    Nan12.2   C     3    Nan13.2   A     Nan  Nan13.2   B     Nan  Nan13.2   C     Nan  Nan14.2   A     4    Nan14.2   B     2    Nan14.2   C     4    Nan15.2   A     Nan  Nan15.2   B     Nan  Nan15.2   C     Nan  Nan16.2   A     7    1416.2   B     2    816.2   C     4    1517.2   A     Nan  1417.2   B     Nan  817.2   C     Nan  1518.2   A     Nan  1418.2   B     Nan  818.2   C     Nan  15谢谢
查看完整描述

1 回答

?
慕码人8056858

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


查看完整回答
反对 回复 2023-10-06
  • 1 回答
  • 0 关注
  • 63 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信