【问题标题】:How to replace pandas dataframe column A value base on the value of another column B如何根据另一列 B 的值替换熊猫数据框列 A 的值
【发布时间】:2018-01-01 20:51:00
【问题描述】:

我有一个数据框,例如 df = pd.DataFrame([[1,2,np.nan],[4,5,np.nan],[7,8,9]]) 所以会是

        sku  r1   r2
    0    1   2  NaN
    1    4   5  NaN
    2    7   8  9.0

如果我想根据 r2 更改 r1 列的值,我的意思是如果 r2 不是 Nan,则使用 r2 的值替换 r1'值,否则保持 r1 不变

所以结果是:

        sku  r1   r2
    0    1   2  NaN
    1    4   5  NaN
    2    7   9.0  9.0

如您所见,在此示例中,在第三种情况下将 8 更改为 9.0。 我是 pandas 的新手,我需要一些时间来解决这个问题。

感谢您的帮助。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以将masknotnull 一起使用:

    df['r1'] = df['r1'].mask(df['r2'].notnull(), df['r2'])
    print (df)
    
       sku   r1   r2
    0    1  2.0  NaN
    1    4  5.0  NaN
    2    7  9.0  9.0
    

    loc:

    df.loc[df['r2'].notnull(), 'r1'] = df['r2']
    print (df)
       sku   r1   r2
    0    1  2.0  NaN
    1    4  5.0  NaN
    2    7  9.0  9.0
    

    【讨论】:

      【解决方案2】:

      使用np.where:

      df['r1'] = np.where(df['r2'].notnull(),df['r2'],df['r1'])
      df
      

      输出:

         sku   r1   r2
      0    1  2.0  NaN
      1    4  5.0  NaN
      2    7  9.0  9.0
      

      【讨论】:

        猜你喜欢
        • 2020-10-21
        • 2016-08-09
        • 2020-10-27
        • 2021-12-12
        • 2021-03-27
        • 1970-01-01
        • 2023-03-12
        • 2022-06-24
        • 2018-08-16
        相关资源
        最近更新 更多