如何替换按列中的索引排序的3个最大值

时间:2019-01-21 18:42:35

标签: python pandas dataframe replace

我有一个简单的问题,但我一直在努力寻找答案。我有一个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,以此类推。以此类推。

0 个答案:

没有答案