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

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

在熊貓中滿足條件后按組前向填充缺失值

在熊貓中滿足條件后按組前向填充缺失值

開滿天機 2022-06-14 17:40:26
我對此有點麻煩。我的數據框如下所示:id    amount    dummy1      130        01      120        01      110        11      nan       nan 1      nan       nan   2      nan        02      50         02      20         12      nan       nan 2      nan       nan  所以,我需要做的是,在 dummy 獲得 value = 1 之后,我需要為每個變量填充零id,如下所示:id    amount    dummy1      130        01      120        01      110        11       0        nan 1       0        nan   2      nan        02      50         02      20         12       0        nan 2       0        nan 我猜我需要一些groupby('id'), fillna(method='ffill'), 也許 a.loc或 a 的組合shift(),但是我嘗試的所有東西都有一些問題或者很慢。有什么建議么?
查看完整描述

4 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

我將使用的方式

s = df.groupby('id')['dummy'].ffill().eq(1)
df.loc[s&df.dummy.isna(),'amount']=0


查看完整回答
反對 回復 2022-06-14
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

你可以更容易地做到這一點:

data[data['dummy'].isna()]['amount'] = 0

這將選擇 dummy 為 nan 的所有行,并用 0 填充金額列。


查看完整回答
反對 回復 2022-06-14
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

IIUC,ffill()并掩蓋靜南:


s = df.groupby('id')['amount'].ffill().notnull()

df.loc[df['amount'].isna() & s, 'amount'] = 0

輸出:


   id  amount  dummy

0   1   130.0    0.0

1   1   120.0    0.0

2   1   110.0    1.0

3   1     0.0    NaN

4   1     0.0    NaN

5   2     NaN    0.0

6   2    50.0    0.0

7   2    20.0    1.0

8   2     0.0    NaN

9   2     0.0    NaN


查看完整回答
反對 回復 2022-06-14
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

請您嘗試以下操作。


df.loc[df['dummy'].isnull(),'amount']=0

df

輸出如下。


    id  amount  dummy

0   1   130.0   0.0

1   1   120.0   0.0

2   1   110.0   1.0

3   1   0.0     NaN

4   1   0.0     NaN

5   2   NaN     0.0

6   2   50.0    0.0

7   2   20.0    1.0

8   2   0.0     NaN

9   2   0.0     NaN


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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