2017-01-06 6 views
3

私は2時間ごとにデータポイントを持つ「低周波」シリーズを持っているとしましょう。これは1時間の周波数にアップサンプリングしたいのですが。パンダ:リサンプリングウィンドウを拡張する

次のコードでは、高周波数信号に24行(23ではなく)の信号を使用できますか?具体的には、新しいインデックスの値をNaNの値(00:00から23:00まで)に変更したい(22:00に停止するのではなく)。

私はいくつかのオプションで多少の演奏をしましたが、まだそれを行うためのきれいな方法を見つけることができませんでした。

import pandas as pd 
import numpy as np 

low_f = pd.Series(np.random.randn(12), 
       index=pd.date_range(start='01/01/2017', freq='2H', periods=12), 
       name='2H').cumsum() 

high_f = low_f.resample('1H',).mean() 

print(high_f.tail(1).index) 

#Yields DatetimeIndex(['2017-01-01 22:00:00'], dtype='datetime64[ns]', freq='H') 
#I'd like DatetimeIndex(['2017-01-01 23:00:00'], dtype='datetime64[ns]', freq='H') 
#(w/ 24 elements) 
+1

これを行うには「きれいな」方法があるとは思えません。 'high_f [high_f.index [-1] + 1] = np.nan' –

+0

このきちんとしたTimeIndexプロパティについて知りませんでした!お返事ありがとうございます。 – jodoox

答えて

1

あなたは1時間(リーディング)で日付をシフトするDateTimeIndex.shiftメソッドを使用することができます。それは古いインデックスと新しく形成されたシフトされたインデックスのunionを取る。

最後に、reindexこれらのインデックスのセットに従ってください。最後のインデックスにはseriesの値が存在しないため、デフォルトのfill_valueパラメータとしてNaNで埋められます。

high_f.reindex(high_f.index.union(high_f.index.shift(1, 'H'))) 
+1

私はTed Petrouの答え( 'high_f [high_f.index [-1] + 1)= np.nan')と比較したところ、私の典型的なテストケースではあなたのものがやや速く見えます。 – jodoox

関連する問題