22

次の 15 分間のデータdataframeを 3 年間として持っています。最初の 2 つの列がインデックスです。

2014-01-01 00:15:00  1269.6      
2014-01-01 00:30:00  1161.6      
2014-01-01 00:45:00  1466.4      
2014-01-01 01:00:00  1365.6      
2014-01-01 01:15:00  1362.6      
2014-01-01 01:30:00  1064.0      
2014-01-01 01:45:00  1171.2      
2014-01-01 02:00:00  1171.0      
2014-01-01 02:15:00  1330.4      
2014-01-01 02:30:00  1309.6      
2014-01-01 02:45:00  1308.4      
2014-01-01 03:00:00  1494.0    

私はresample毎月の平均で 2 番目のシリーズを取得していました。

data_Monthly = data.resample('1M', how='mean')

最後の列の値を月平均で割り、結果が 15 分の粒度の時系列のままになるようにするにはどうすればよいですか?

4

4 に答える 4

28

最初にハタを作ります:

import pandas as pd

In [1]: grouper = pd.Grouper(freq="1M")

次に、新しい列を作成します。

In [2]: df['normed'] = df.groupby(grouper).transform(lambda x: x/x.mean())

grouperをgroupbyメソッドに渡すことで、データを1か月のチャンクにグループ化します。各チャンク内で、15分間隔のデータをその月の平均で割ります。

于 2013-03-08T18:35:03.990 に答える
0

これは、次のように 1 行で実行できます。

df.groupby([df.index.year, df.index.month]).transform(lambda x: x/x.mean())
于 2017-08-30T13:01:42.787 に答える