首页 > 解决方案 > 如何在没有循环的情况下根据另一列替换列(数据框)中组的所有相同值?

问题描述

如果与该组对应的另一列中有 1,我正在尝试将一组值中的所有相同值替换为 0。

这是我想要的输出示例,如果 Y 列中有 1,我希望输入列中的所有组都为 0。对于速度问题,我不想使用任何循环交叉每个列值(假设我的列可以有数千个值)。

我想要的结果

非常感谢 !

标签: pythonpandasnumpydataframe

解决方案


采用:

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']))

推荐阅读