python - 在 Pandas 中满足条件后按组向前填充缺失值

标签 python pandas group-by nan

我在这方面遇到了一些麻烦。我的数据框如下所示:

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') 的组合,也许是一个 。 locshift() ,但我尝试的一切都出现了问题或速度很慢。有什么建议吗?

最佳答案

我将使用的方式

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/

相关文章:

python - 自定义 groupby 函数 pandas python

python - 测试 : Allow Failure Rate

python - 在 Python 中使用 for 循环读取文件内容

python - 适用于 Mac OS 10.4 的最新 Python 版本是什么?

python - 合并具有不同索引的 pandas 系列(在一个索引上对齐)

python - 从 2D 列表中删除重复元素(不是列表),Python

mysql - 返回尚未关注(或查看)的最受关注用户

python - 如何在 Python 中添加减去的日期值

python - 来自字典/汇总 DataFrame 的 Pandas 系列

MySQL组有问题