2016-11-24 7 views
1

私は1204日にわたって日常的な頻度でタイムセリフを持っています。 私は365Dベースでそれを再サンプリングしたい(合計で)が、時間セリフは365Dの倍数ではなく、3,29 * 365Dで実行されます。 デフォルトでは、resampleは4行を返します。ここでパンダ - 周波数の倍数でない場合のリサンプル?

は、生のデータです:

DATE 
2012-08-12 15350.0 
2012-08-19 11204.0 
2012-08-26 11795.0 
2012-09-02 15160.0 
2012-09-09  9991.0 
2012-09-16 12337.0 
2012-09-23 10721.0 
2012-09-30  9952.0 
2012-10-07 11903.0 
2012-10-14  8537.0 
       ... 
2015-09-27 14234.0 
2015-10-04 17917.0 
2015-10-11 13610.0 
2015-10-18  8716.0 
2015-10-25 15191.0 
2015-11-01  8925.0 
2015-11-08 13306.0 
2015-11-15  8884.0 
2015-11-22 11527.0 
2015-11-29  6859.0 

df.index.max() - df.index.min() 
Timedelta('1204 days 00:00:00') 

私が適用された場合:

df.resample('365D').sum() 

私が得た:

DATE 
2012-08-12 536310.0 
2013-08-12 555016.0 
2014-08-12 569548.0 
2015-08-12 245942.0 
Freq: 365D, dtype: float64 

最後のビンが未満をカバーするものですように思え365日。 resampleを結果から除外するにはどうすればよいですか?

+0

でサンプリングを考慮することができる

df.resample('365D').sum()[:-1] 

はあなたがここにあなたのいくつかの例のデータを置くことができ、それをスキップ? – tworec

+1

コードスニペットとサンプルデータを追加してください。 –

+0

@tworec:例を追加しました。 – Bkyn

答えて

1

df.resample('365D')がインデックスの最も低い日にサンプリングを開始します。だから、最後のビンはほとんどすべての日をカバーしていないallwaysされます。ちょうどあなたがまた一年の開始/終了

df.resample('A').sum() 
+0

ありがとうございます。最高の日にサンプルを仕上げて、最新のビンが最新のビンになるようにすることはできますか?そして最初のビンをスキップします。 – Bkyn

+0

全てが可能です。 :)最高の日を使用するには、索引に、最も低い日付と同じ日時を持つ人工日付を追加する必要があります。 'df [df.index [-1] + pd.DateOffset(year = df.index [ 0] .year-1)+ pd.Timedelta( '2D')] = 0' – tworec

+0

となります!閏年に365Dのサンプリングが壊れた – tworec