如何根据没有循环的列(数据帧)替换另一列中组的所有相同值?

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

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

http://img1.mukewang.com/62f4f2fd0001625102310344.jpg

一只甜甜圈
浏览 84回答 1
1回答

呼唤远方

用: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']))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python