【问题标题】:how to replace values in particular DF column depending on another column如何根据另一列替换特定DF列中的值
【发布时间】:2021-02-10 08:24:49
【问题描述】:

我有一个如下所示的 DataFrame

df = pd.DataFrame({          
    'A' : [x,x,x,x,x],
    'B' : [1,2,1,1,2]        
    })

我想用 y 替换 x 其中 df['B'] == 2 我知道有很多方法,但是完成此操作的最短代码是什么?我相信 np.where 是一种方法,但它可以根据另一列中的值更改值(或覆盖变量)吗?

【问题讨论】:

    标签: python python-3.x pandas dataframe numpy


    【解决方案1】:

    以下是一些通过两种条件选择或使用replace 与一种条件选择的替代方案:

    df = pd.DataFrame({          
        'A' : ['x'] * 5,
        'B' : [1,2,1,1,2]        
        })
    
    df.loc[df.B.eq(2) & df.A.eq('x'), 'A'] = 'y'
    print (df)
       A  B
    0  x  1
    1  y  2
    2  x  1
    3  x  1
    4  y  2
    

    或者:

    df.A = df.A.mask(df.B.eq(2) & df.A.eq('x'), 'y')
    

    或者:

    df.A = df.A.mask(df.B.eq(2), df.A.replace('x','y'))
    

    或者:

    df.loc[df['B'].eq(2), 'A'] = df['A'].replace('x', 'y')
    

    【讨论】:

      【解决方案2】:

      尝试使用loc

      >>> df.loc[df['B'] == 2, 'A'] = df.loc[df['B'] == 2, 'A'].replace('x', 'y')
      >>> df
         A  B
      0  x  1
      1  y  2
      2  x  1
      3  x  1
      4  y  2
      >>> 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-03
        • 2019-11-02
        • 1970-01-01
        • 2015-12-31
        • 2022-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多