2012-10-16 5 views
6

나는 'YYYY-MM-DD HH : MM : SS'와 같은 datetime 인덱스가있는 팬더 데이터 프레임을 가지고 있습니다.팬더 데이터 프레임을 일 /시/분으로 자르기

Index    Parameter 
2007-05-02 14:14:08  134.8 
2007-05-02 14:14:32  134.8 
2007-05-02 14:14:41  134.8 
2007-05-02 14:14:53  134.8 
2007-05-02 14:15:01  134.8 
2007-05-02 14:15:09  134.8 
...... 
2007-05-30 23:08:02  105.9 
2007-05-30 23:18:02  105.9 
2007-05-30 23:28:02  105.9 
2007-05-30 23:38:03  105.8 

그것은 년 df['2007']에 의해 또는 월 df['2007-05']하여 DataFrame 슬라이스 얻을 수 있습니다? 내가 예를 df['2007-05-02']를 들어, 하루 DataFrame 슬라이스를 시도했습니다 때

, 나는 오류를 가지고 :

KeyError: < Timestamp: 2007-02-05 00:00:00. 

나는 팬더 버전 8.0.1을 사용합니다. 년 또는 달보다 작은 빈도로 DataFrame을 분할 할 수 있습니까? 예를 들어, 하루 또는 시간?

+1

흥미 년 또는 년 - 월에 의해 인덱싱 년 - 월 - 일보다는 다른 동작을 가지고있다. 년 - 월 - 일에는 H : M : S = 0 : 0 : 0 인 타임 스탬프 만 고려됩니다. BTW 나는 당신이 DataFrame 아니라 시리즈에서 일하고 있다고 가정합니다. –

답변

11

df.ix[x:y]을 사용하십시오. 여기서 xy은 datetime 개체입니다.

예 :이 작업을 수행 할 수 있습니다

In [117]: frame.index.summary() 
Out[117]: 'DatetimeIndex: 6312960 entries, 2000-04-05 00:01:00 to 2012-04-06 00:00:00\nFreq: T' 


In [118]: x=datetime(2001, 4, 5, 0, 1) 

In [119]: y=datetime(2001, 4, 5, 0, 5) 

In [120]: print frame.ix[x:y] 
        radiation  tamb 
2001-04-05 00:01:00 67.958873 8.077386 
2001-04-05 00:02:00 50.801294 0.731453 
2001-04-05 00:03:00 16.042035 6.944998 
2001-04-05 00:04:00 5.678343 9.728967 
2001-04-05 00:05:00 72.551601 7.652942 

:

In [121]: print frame.ix[x] 
radiation 67.958873 
tamb   8.077386 
Name: 2001-04-05 00:01:00 
+0

예, 정확한 인덱스 포인트에 "타격"하지 않고 수행 할 수 있습니까? 예 : 이 시리즈가 2007-05-02 14:14:08로 시작한다면,'x = pd.Timestamp ('2007-05-02 14:00:00')로 인덱싱하면 여전히'KeyError'가 발생합니다. – metakermit

+2

아, 그래,'s.between_time (x, y)'로 처리했다. – metakermit

관련 문제