4 回答

TA貢獻1799條經驗 獲得超6個贊
我將使用的方式
s = df.groupby('id')['dummy'].ffill().eq(1) df.loc[s&df.dummy.isna(),'amount']=0

TA貢獻1943條經驗 獲得超7個贊
你可以更容易地做到這一點:
data[data['dummy'].isna()]['amount'] = 0
這將選擇 dummy 為 nan 的所有行,并用 0 填充金額列。

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

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
添加回答
舉報