python - 带有 group by 并匹配条件的 ffil
问题描述
每当您在列log
中找到第一个 1 时,我愿意为每个 id 填充值log
例子:
df
id log
1 0
1 1
1 0
1 0
2 1
2 0
3 1
3 0
3 1
至
id log ffil_log
1 0 0
1 1 1
1 0 1
1 0 1
2 1 1
2 0 1
3 1 1
3 0 1
3 1 1
我的尝试是:
df['ffil_log']=df.log.where(df.log==1).groupby(df.id).ffill()
解决方案
您可以使用cummax
,groupby
例如:
df['ffil_log'] = df.groupby('id')['log'].cummax()
对于每个 id,一旦您连续达到 1,它将是之后的值,并且您会得到预期的结果
id log ffil_log
0 1 0 0
1 1 1 1
2 1 0 1
3 1 0 1
4 2 1 1
5 2 0 1
6 3 1 1
7 3 0 1
8 3 1 1
推荐阅读
- redis - LettuceConnectionFactory 与 SentinelTopologyProvider
- c# - 知道 Windows 何时要求关闭进程
- react-native - WebView 已从 React Native 中移除
- php - Google Photos API 刷新令牌在 1 小时后未刷新 photosLibraryClient
- c# - 如何在 rdlc 报告中显示和设计列表列表
- c# - SharePoint CSOM 未在 ExecuteQuery 上引发预期异常
- json - 如何在 Flutter App 中使用 HTML 读取 JSON?
- .htaccess - 如何在 htaccess Xampp 中传递多个值
- python - 错误“强制转换为 Unicode:需要字符串或缓冲区,找到 cStringIO.StringO”当我尝试从 python 中的 url 插入 excel 图像时
- python - 是否有理由不总是使用leaky_relu