我有一个简单的问题,但我一直在努力寻找答案。我有一个DataFrame,我要从中使用3天的滚动平均值替换3个最大值,但按索引顺序。因此对于这样的DataFrame:
Copy Files
我想先用Sales
2
4
6
8
10
12
14
100
100
200
中的100
替换两行,然后用Sales
替换行。我尝试了以下方法:
200
但是它带来以下错误:
AttributeError:'numpy.float64'对象没有属性'replace'
我知道这可行:
df.Sales.replace(df.Sales.nlargest(3).sort_index(),df.Sales.rolling(window=7).mean())
我可以这样做3次,但是我有一个问题,它会首先替换df.Sales.replace(df.Sales.max(),df.Sales.rolling(window=7).mean())
,然后替换其他的,所以这不是我真正需要的。
我想类似的事情会起作用:
200
但是我宁愿避免循环。可能吗?
编辑:预期输出为:
for i in df.Sales.nlargest(3).sort_index():
df.Sales.replace(i, df.Sales.rolling(window=7)
换句话说,用2到14的平均值代替前8个,即8。然后用4到2的8之间的平均值代替8.86,以此类推。以此类推。