删除数据框的异常值

时间:2019-12-27 09:01:17

标签: python pandas

clean_data = pd.DataFrame([[1,2,3], [3, 11, 3], [7,8,12]])

我有这个df,我想遍历每一行并找到大于10的元素,然后用该行的平均值替换它。我可以用难看的代码来做到这一点,但我相信有几行代码可以做到这一点。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

DataFrame.maskmean一起使用:

df = clean_data.mask(clean_data > 10, clean_data.mean(axis=1), axis=0)
print (df)
   0         1  2
0  1  2.000000  3
1  3  5.666667  3
2  7  8.000000  9

或将numpy.whereDataFrame构造函数配合使用:

df = pd.DataFrame(np.where(clean_data > 10, clean_data.mean(axis=1), clean_data), 
                  columns=clean_data.columns,
                  index=clean_data.index)
print (df)
     0         1    2
0  1.0  2.000000  3.0
1  3.0  5.666667  3.0
2  7.0  8.000000  9.0