2016-08-05 6 views
0

data['hod'] = [r.hour for r in data.index]을 사용하여 팬더에서 1 시간 열을 생성 할 수 있습니다. 이는 그룹 관련 관련 분석에 유용합니다. 그러나 09:00 대신 09:30에 시작하는 1 시간 간격으로 유사한 열을 만들 수 있기를 원합니다. 따라서 열 값은 09 : 30-10 : 30, 10 : 30-11 : 30 등이됩니다.1 시간 간격을 보여주는 팬더 시계열 추가

목표는 해당 기간에 대한 통계를 얻기 위해 이러한 값을 그룹화 할 수 있도록하는 것입니다.

다음과 같이 데이터를 사용합니다. 난 당신이 각 시간의 절반 지점에서 시작 때 가정

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

: 난 이미, 난 그냥 이후 한 시간 간격으로 9시 반에서 슬라이스 시간에 대해 동일해야합니다 하루의 시간, 주 등의 일을 추가 하루를 24 대신 25 개의 섹션으로 나눕니다. 섹션 -1 : [0:00, 0:29], 섹션 0 : [0:30, 1:29], 섹션 1 : 1:30, 2:29] ... 22 편 : [22:30, 23:29]과 23 장 : [23:30, 23:50], 첫 번째와 마지막 부분은 30 분이 소요됩니다.

그리고 여기 지금 당신이 'hod2'에서이 DataFrame을 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) 

에 구현입니다.

관련 문제