我想在样本中用min / max替换异常值数据,但dataframe.replace不起作用。
df = pd.DataFrame({"value": data.price.values.ravel()},index = data.major_axis.ravel())
result = df.pct_change()
threshold = np.std(result.value) * 3
maxoutlier = result[result.value > threshold]
minoutlier = result[result.value < -threshold]
minresult = result.ix[result[abs(result.value) < threshold].idxmin()]
maxresult = result.ix[result[abs(result.value) < threshold].idxmax()]
result.value.replace(result[result.value > threshold].value, maxresult.value)
result.value.replace(result[result.value < -threshold].value, minresult.value)
结果[result.value&gt;阈值] .value和maxresult.value具有相同的类型:dataframe。但是,我无法弄清楚它为什么不起作用。谢谢你的帮助。
变量result是一个数据帧,例如
value
2013-08-19 NaN
2013-08-20 -0.013342
2013-08-21 0.002654
2013-08-22 0.001073
2013-08-23 -0.003744
2013-08-26 0.003702
2013-08-27 -0.029353
2013-08-28 0.005176
.........
2014-12-29 -0.000702
2014-12-30 -0.011763
2014-12-31 -0.019453
[346 rows x 1 columns]
maxoutlier也是数据帧,例如
value
2013-09-23 0.051114
2014-04-24 0.082200
maxresult是相同的,例如,
value
2013-12-23 0.039175
所以我的目标是用maxresult替换maxoutlier。