亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號