2016-08-05 10 views
0

私はパンダでdata['hod'] = [r.hour for r in data.index]を使って1時間の列を作成することができます。これはgroupby関連の分析には本当に便利です。しかし、私は9時から9時30分に始まる1時間間隔の同様の列を作成することができます。したがって、列の値は09:30-10:30,10:30-11:30などとなります。1時間間隔を示すパンダの時系列追加

期間の統計情報を得るために、これらの値をグループ化することが目的です。

以下のようにデータを使用します。私はすでにその日の時間、曜日などを追加して、私はちょうど一時間間隔で以降9:30から切り出された時間のために同じことをする必要があります:あなたは、各時間の半分のポイントから起動したときに

data['2008-05-06 09:00:00':].head() 


Open High Low Last Volume hod dow dom minute 
Timestamp         
2008-05-06 09:00:00 1399.50 1399.50 1399.25 1399.50 4 9 1 6 0 
2008-05-06 09:01:00 1399.25 1399.75 1399.25 1399.50 5 9 1 6 1 
2008-05-06 09:02:00 1399.75 1399.75 1399.00 1399.50 19 9 1 6 2 
2008-05-06 09:03:00 1399.50 1399.75 1398.50 1398.50 37 9 1 6 3 
2008-05-06 09:04:00 1398.75 1399.00 1398.75 1398.75 15 9 1 6 4 
+0

もっと詳しく説明してください。これはちょうど私の出力 'DatetimeIndex([]、dtype = 'datetime64 [ns]'、freq = 'H')' – ade1e

+0

@adeleを与えます、あなたは望ましいデータセットを投稿できますか? – MaxU

+0

こんにちはMaxu、次の例の 'data ['2016']のようにgroupbyに使うことができます。groupby( 'hod')。Volume.mean()' hod '[r.our in data.index]'によって生成されます。これは、09:30-10:30、10:30-11:30など、「非標準時」のような新しい列が必要であることを意味します。 09:30-10:30などを撮るために私のグループバイをする別の方法があればそれも素晴らしいです。これが理にかなってほしい。 – ade1e

答えて

0

私は仮定しましたセクション-1:[0:00、0:29]、セクション0:[0:30、1:29]、セクション1:[セクション1: 1:30、2:29] ...セクション22:[22:30、23:29]とセクション23:[23:30、23:50]、最初と最後のセクションは30分です。

そして、ここでは、今、あなたは 'hod2' に関するこのデータフレームをGROUPBYできパンダ

import pandas as pd 
import numpy as np 

def shifted_hour_of_day(ts, beginning_of_hour=0): 
    shift = pd.Timedelta('%dmin' % (beginning_of_hour)) 
    ts_shifted = ts - pd.Timedelta(shift) 
    hour = ts_shifted.hour 
    if ts_shifted.day != ts.day: # we shifted these timestamps to yesterday 
     hour = -1 # label the first section as -1 
    return hour 

# Generate random data 
timestamps = pd.date_range('2008-05-06 00:00:00', '2008-05-07 00:00:00', freq='10min') 
vals = np.random.rand(len(timestamps)) 
df = pd.DataFrame(index=timestamps, data={'value': vals}) 
df.loc[:, 'hod'] = [r.hour for r in df.index] 
# Test shifted_hour_of_day 
df.loc[:, 'hod2'] = [shifted_hour_of_day(r, beginning_of_hour=20) for r in df.index] 
df.head(20) 

で実装したものです。

関連する問題