【问题标题】:Replace specific values in dataframe替换数据框中的特定值
【发布时间】:2019-02-25 21:15:13
【问题描述】:

如何替换 Dataframe 中的特定值。例如,在下面的数据框中,我想替换以 [AA,CB,EZ] 开头的行,我想替换的值是 ''

   df = pandas.DataFrame({'A': ['AA','BB','CB','DD','EZ'],'B':[6,7,8,9,10],'C':[11,12,13,14,15]})
$ df
    A   B   C
 0  AA   6  11
 1  BB   7  12
 2  CB   8  13
 3  DD   9  14
 4  EZ  10  15

$ Expected Ouputdf
    A   B   C
 0  AA   
 1  BB   7  12
 2  CB     
 3  DD   9  14
 4  EZ    

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    你可以用空字符串替换布尔掩码的值,但是得到混合类型 - 带有数字的字符串和一些函数应该失败:

    mask = df['A'].str.startswith(('AA','CB','EZ'))
    
    df.loc[mask, ['B', 'C']] = ''
    print (df)
        A  B   C
    0  AA       
    1  BB  7  12
    2  CB       
    3  DD  9  14
    4  EZ       
    

    最好将值替换为NaNs:

    df.loc[mask, ['B', 'C']] = np.nan
    print (df)
        A    B     C
    0  AA  NaN   NaN
    1  BB  7.0  12.0
    2  CB  NaN   NaN
    3  DD  9.0  14.0
    4  EZ  NaN   NaN
    

    另一种解决方案:

    df[['B', 'C']] = df[['B', 'C']].mask(mask)
    

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 2020-10-23
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-14
      • 2017-05-06
      相关资源
      最近更新 更多