次のように定義された pandas データ フレームがあります。
last_4_weeks_range = pandas.date_range(
start=datetime.datetime(2001, 5, 4), periods=28)
last_4_weeks = pandas.DataFrame(
[{'REST_KEY': 1, 'DLY_TRN_QT': 80, 'DLY_SLS_AMT': 90,
'COOP_DLY_TRN_QT': 30, 'COOP_DLY_SLS_AMT': 20}] * 28 +
[{'REST_KEY': 2, 'DLY_TRN_QT': 70, 'DLY_SLS_AMT': 10,
'COOP_DLY_TRN_QT': 50, 'COOP_DLY_SLS_AMT': 20}] * 28,
index=last_4_weeks_range.append(last_4_weeks_range))
last_4_weeks.sort(inplace=True)
そして、私がそれをリサンプリングするとき:
In [265]: last_4_weeks.resample('7D', how='sum')
Out[265]:
COOP_DLY_SLS_AMT COOP_DLY_TRN_QT DLY_SLS_AMT DLY_TRN_QT REST_KEY
2001-05-04 280 560 700 1050 21
2001-05-11 280 560 700 1050 21
2001-05-18 280 560 700 1050 21
2001-05-25 280 560 700 1050 21
2001-06-01 0 0 0 0 0
2001-06-01 という予想外の余分な空のビンができてしまいます。私の 28 日間は、実行中の 7 日間のリサンプルに割り切れるので、そのビンがそこにあるとは思いません。閉じたクワーグをいじってみましたが、その余分なビンから逃れることはできません。入れるものが何もないのに余分なビンが表示されるのはなぜですか? また、それを生成しないようにするにはどうすればよいですか?
私が最終的にやろうとしているのは、REST_KEY ごとに 7 日間の平均を取得することです。
In [266]: last_4_weeks.groupby('REST_KEY').resample('7D', how='sum').mean(level=0)
Out[266]:
COOP_DLY_SLS_AMT COOP_DLY_TRN_QT DLY_SLS_AMT DLY_TRN_QT REST_KEY
REST_KEY
1 112 168 504 448 5.6
2 112 280 56 392 11.2
しかし、その余分な空のビンは私の平均を捨てています (たとえば、COOP_DLY_SLS_AMT の場合、(20 * 7 * 4) / 4 から得られる 140 ではなく、(20 * 7 * 4) / 5 である 112 を取得します。私はその余分なビンを持っていませんでした。) また、REST_KEY は groupby の一部であるため、集計に表示されるとは思いませんが、それは実際には小さな問題です。
PS私はパンダ0.11.0を使用しています