我在这方面遇到了一些麻烦。我的数据框如下所示:
id amount dummy
1 130 0
1 120 0
1 110 1
1 nan nan
1 nan nan
2 nan 0
2 50 0
2 20 1
2 nan nan
2 nan nan
所以,我需要做的是,在 dummy 获得 value = 1 之后,我需要为每个 id
用零填充 amount 变量,如下所示:
id amount dummy
1 130 0
1 120 0
1 110 1
1 0 nan
1 0 nan
2 nan 0
2 50 0
2 20 1
2 0 nan
2 0 nan
我猜我需要一些 groupby('id')
、fillna(method='ffill')
的组合,也许是一个 。 loc
或 shift()
,但我尝试的一切都出现了问题或速度很慢。有什么建议吗?
最佳答案
我将使用的方式
s = df.groupby('id')['dummy'].ffill().eq(1)
df.loc[s&df.dummy.isna(),'amount']=0
关于python - 在 Pandas 中满足条件后按组向前填充缺失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58237556/