2

重複したインデックスを含む次のデータ フレームで pd.rolling_mean 関数を使用するのが困難です。

               amount
    20140101    3
    20140102    4
    20140103    3
    20140103    5
    20140103    1
    20140104    5
    20140105    6
    20140106    2
    …

「金額」の 3 日間の平均を計算する必要があります。たとえば、201401012014010420140103から(3+4+3+5+1)/5=3.220140106 までの金額の平均は(5+6+2)/3=4.3

誰もそれを行う方法を知っていますか? 前もって感謝します!

4

2 に答える 2

1

日付列がすでに日時であり、それがインデックスである場合は、次のように呼び出すことができますrolling_mean

In [15]:

pd.rolling_mean(df['amount'], window=1,  freq='3d')
Out[15]:
date
2014-01-01    3.200000
2014-01-04    4.333333
Freq: 3D, dtype: float64

必要に応じて、次のようにしてインデックスを日時に変換できます。

df.index = pd.to_datetime(df.index.astype(str), '%Y%m%d')

これは、インデックスが実際には dtype int64 の場合です。既に文字列である場合は、astypeビットを無視できます。

于 2015-02-21T21:59:11.797 に答える