python - 如何在没有循环的情况下根据另一列替换列(数据框)中组的所有相同值?
问题描述
如果与该组对应的另一列中有 1,我正在尝试将一组值中的所有相同值替换为 0。
这是我想要的输出示例,如果 Y 列中有 1,我希望输入列中的所有组都为 0。对于速度问题,我不想使用任何循环交叉每个列值(假设我的列可以有数千个值)。
非常感谢 !
解决方案
采用:
df['output']=(df['Y'].ne(1)
.groupby(df['input'].ne(df['input'].shift()).cumsum())
.transform('all')
.mul(df['input']))
或者
((~df['Y'].eq(1)
.groupby(df['input'].ne(df['input'].shift()).cumsum())
.transform('any')).mul(df['input']))
推荐阅读
- mysql - 与“创建表为”类似的功能,但添加更多信息
- python - 用于计算 2 列中的值的 Pandas groupby/pivot 表
- css - 如何用css减少这个字母“、”中的空格?
- gitlab - 使用 PWD 在 .gitlab-ci.yml 中定义变量时出错
- pandas - cannot read csv with date parsing, dtypes and chunksize
- jenkins - 传递给 MsBuild 的 Arg 在 PostBuildEvent 上无法识别
- javascript - 使用 getElementsByName 获取选中的单选按钮值?
- html - CSS Design Advice - abnormal CSS polygons with border-radius and box shadow
- linux - Cannot build Nvidia on kernel 5.0.0-32-generic
- ios - UISearchController glitches when placed in UINavigationItem - iOS 11+