首页 > 解决方案 > 满足条件时,使列行与另一列的匹配值具有相同的值

问题描述

我有一个如下所示的数据框

df = pd.DataFrame({'col1': ['A', 'A', 'B', 'C', 'D', 'D'],
                   'col2': [1,0,1,0,0,1]})
col1 col2
一个 1
一个 0
1
C 0
D 0
D 1

如果 col2 = 1 中有一行,我想让所有 col2 行 = 1 以获得相同的值 col1 值。我想要的表格如下:

col1 col2
一个 1
一个 1
1
C 0
D 1
D 1

任何帮助深表感谢!

标签: pythonpandasdataframereplacematching

解决方案


您可以分两步将其分块:

获取 col2 为 1 的行:

filters = df.loc[df.col2.eq(1), 'col1']

将新值分配给 col1 所在的行filters

df.loc[df.col1.isin(filters), 'col2'] = 1

df
 
  col1  col2
0    A     1
1    A     1
2    B     1
3    C     0
4    D     1
5    D     1

推荐阅读