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

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

python pandas 用最大值填充 NaN 或毯子

python pandas 用最大值填充 NaN 或毯子

慕無忌1623718 2022-12-06 17:29:11
我有一個大數據框的問題。這是一個小片段。我想用最大值填充最后一列 E,如果有一些值或讓它為空。那就是數據:d = {'A': [4000074, 4000074, 4000074, 4000074, 4000074, 4000074, 4000074, 4000074, 4000074,   4000074, 4000074, 4000074, 4000074, 4000074, 4000074, 4000074, 4000074, 4000074], 'B': ['SP000796746', 'SP000796746', 'SP000796746', 'SP000796746', 'SP000796746','SP000796746',   'SP000796746', 'SP000796746', 'SP000796746', 'SP000796746', 'SP000796746', 'SP000796746',    'SP000796746', 'SP000796746', 'SP000796746', 'SP000796746', 'SP000796746', 'SP000796746'], 'C': [201926, 201926, 201926, 201926, 201926, 201926, 201909,201909, 201909, 201909, 201909,    201909, 201933, 201933, 201933, 201933, 201933, 201933], 'D': [-1, 0, 1, 2, 3, 4, -1, 0, 1, 2, 3, 4, -1, 0, 1, 2, 3, 4],  'E': [np.nan, 1000, 1000, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, 3000, 3000, np.nan]}它看起來像這樣:       A            B       C     D       E0   4000074  SP000796746  201926 -1     NaN1   4000074  SP000796746  201926  0  1000.02   4000074  SP000796746  201926  1  1000.03   4000074  SP000796746  201926  2     NaN4   4000074  SP000796746  201926  3     NaN5   4000074  SP000796746  201926  4     NaN6   4000074  SP000796746  201909 -1     NaN7   4000074  SP000796746  201909  0     NaN8   4000074  SP000796746  201909  1     NaN9   4000074  SP000796746  201909  2     NaN10  4000074  SP000796746  201909  3     NaN11  4000074  SP000796746  201909  4     NaN12  4000074  SP000796746  201933 -1     NaN13  4000074  SP000796746  201933  0     NaN14  4000074  SP000796746  201933  1     NaN15  4000074  SP000796746  201933  2  3000.016  4000074  SP000796746  201933  3  3000.017  4000074  SP000796746  201933  4     NaN
查看完整描述

1 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

您可以使用D 列中的新 -1 和 中的組groupby.transform來完成。然后是原來的專欄。maxcumsumfillna


df['E'] = df['E'].fillna(df['E'].groupby(df['D'].eq(-1).cumsum()).transform('max'))

編輯:用零填充,你可以這樣做:


mask = df['E'].groupby(df['D'].eq(-1).cumsum()).transform('any')

df.loc[mask, 'E'] = df.loc[mask, 'E'].fillna(0)


查看完整回答
反對 回復 2022-12-06
  • 1 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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