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
添加回答
举报