【问题标题】:Replace a specific range of values in a pandas dataframe替换熊猫数据框中特定范围的值
【发布时间】:2019-05-31 17:08:30
【问题描述】:

我有大数据集,并且有大量的值远远超过平均水平。 例如,

    A         B
1  'H'       10
2  'E'    10000
3  'L'       12
4  'L'        8
5  'O'       11

我想将B2 单元格设置为 0,我试过了,

df['B'] = df['B'].replace([df['B'] > 15], 0)

但没有得到任何运气。 怎么能让我的数据框变成这样,

    A         B
1  'H'       10
2  'E'        0
3  'L'       12
4  'L'        8
5  'O'       11

谢谢!

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    你真的很亲密——不要使用replace,而是使用mask

    df['B'] = df['B'].mask(df['B'] > 15, 0)
    print (df)
         A   B
    1  'H'  10
    2  'E'   0
    3  'L'  12
    4  'L'   8
    5  'O'  11
    

    替代方案:

    df['B'] = np.where(df['B'] > 15, 0, df['B'])
    print (df)
         A   B
    1  'H'  10
    2  'E'   0
    3  'L'  12
    4  'L'   8
    5  'O'  11
    

    如果你想替换一些范围:

    df['B'] = np.where(df['B'].between(8,11), 0, df['B'])
    print (df)
         A      B
    1  'H'      0
    2  'E'  10000
    3  'L'     12
    4  'L'      0
    5  'O'      0
    

    【讨论】:

      【解决方案2】:

      另一种选择:

      df.loc[df['B'] > 15, 'B'] = 0
      #   df
      #    B
      #0  10
      #1   0
      #2  12
      #3   8
      #4  11
      

      【讨论】:

      • 阻塞DataFrames 上的MultiIndex
      猜你喜欢
      • 2020-08-08
      • 2017-10-31
      • 2020-04-25
      • 2015-10-22
      • 1970-01-01
      • 2019-02-02
      • 2018-09-29
      • 2019-01-24
      相关资源
      最近更新 更多