在pandas中对异常值进行分组时出现意外行为[Python]

时间:2016-08-19 08:42:04

标签: python pandas dataframe

我的数据框格式为

df

            Count
DateTime    
2015-01-16  10
2015-01-17  28
2015-01-18  26
2015-01-19  10
2015-01-20  24
2015-01-21  25

我尝试使用此功能来消除使用groupby的异常值

def replaceit(group):
    mean, std = group.mean(), group.std()
    outliers = (group - mean).abs() > 3*std
    group[outliers] = mean        # or "group[~outliers].mean()"
    return group

创建该数据帧的副本,因为我想在其他地方使用它:

df2 = df

让我们看看df2的输出

df2

            Count
DateTime    
2015-01-16  10
2015-01-17  28
2015-01-18  26
2015-01-19  10
2015-01-20  24
2015-01-21  25

让我们使用函数

df2 = replaceit(df2)

df2 

DateTime
2015-01-16       10.000000
2015-01-17       28.000000
2015-01-18       26.000000
2015-01-19       10.000000
2015-01-20       24.000000
2015-01-21       25.000000

但现在让我们看看df的输出:

df

                Count
DateTime    
2015-01-16  10.000000
2015-01-17  28.000000
2015-01-18  26.000000
2015-01-19  10.000000
2015-01-20  24.000000
2015-01-21  25.000000

我的问题是,为什么会发生这种情况? 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

问题是如果使用df2它是对初始DataFrame的引用。因此,更改df会更改初始DataFrame df2 = df.copy()

您需要copy

ImageLocation