【问题标题】:How to replace values greater than specific value in dataframe column?如何替换数据框列中大于特定值的值?
【发布时间】:2020-11-21 09:44:25
【问题描述】:

我有一个年龄字段中有一些异常值的数据集,这里是我排序的数据的唯一值

unique = df_csv['AGE'].unique()
print (sorted(unique))

[21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69、70、71、72、73、74、75、79、126、140、149、152、228、235、267]

如何将大于 80 的任何值替换为我的 Age 列的平均值或中位数?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    由于您想使用数据框中的列,您应该解析为loc

     # replace `median` with `mean` if you want
     df_csv.loc[df_csv['AGE']>80,'AGE'] = df_csv['AGE'].median()
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      series[series > 80] = series.median()
      print(series)
      

      输出

      0     21
      1     22
      2     23
      3     24
      4     25
            ..
      58    52
      59    52
      60    52
      61    52
      62    52
      Length: 63, dtype: int64
      

      【讨论】:

        【解决方案3】:
        median = df_csv['AGE'].median()
        # using apply 
        df_csv['AGE'].apply(lambda x: median if x>80 else x)
        
        

        其他方法:Here

        【讨论】:

        • 解释 apply 的作用:lambda 是一个没有名称的函数,您可以为其分配任何函数(类似于 def ...,但更易于使用)。 lambda x,表示从数据框中选择值。然后在分号之后你有条件:如果 x>80,中位数,否则保持 x 相同,它会遍历每一行并进行检查
        猜你喜欢
        • 2019-02-25
        • 2020-04-14
        • 2020-02-12
        • 1970-01-01
        • 1970-01-01
        • 2021-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多