2013-12-17 4 views
4

나는 팬더에서 이것을 수행하는 방법을 알아 내려고 노력하고 있으며, 지금까지는 운이 없었습니다.파이썬 팬더는 나이를 기준으로 값을 선택합니다.

     A   B  C   D 
time     
2013-07-19 14:54:03  1354.85  92.20 1453.44  7746.56 
2013-07-19 14:56:02  1348.30  44.60 1399.83  7800.17 
2013-07-19 14:58:02  1285.76  33.93 1325.31  7874.69 
... 
2013-12-16 14:24:02  1114.74  136.59 1254.04  7945.96 
2013-12-16 14:26:03  1180.76  65.39 1248.59  7951.41 
2013-12-16 14:28:03  1015.98  126.96 1147.68  8052.32 

이 데이터는 매우 자주 업데이트되는 나는 등 지난 24 시간, 지난 주, 지난 달, 모든 값을 선택할 수 있도록하고 싶습니다 :

내 데이터 프레임은 다음과 같습니다 .

나의 현재 해결 방법은 이와 같은 쿼리를 사용하여 데이터베이스에서 데이터를 가져 오는 것입니다 :

24_hour_data = ('select time, A, B, C, D from \ 
    agg where time >= datetime(\'now\', \'-24 Hours\', \'localtime\')') 

감사합니다.

답변

2

당신이 시간대를 처리 할 필요가 없다는 가정 : 귀하의 예제와

import datetime 

now = datetime.datetime.now() 
yesterday = now + datetime.timedelta(days=-1) 
fmt = '%Y-%m-%d' #  fmt = '%Y-%m-%d %T' if you want more precision. 

df.ix[yesterday.strftime(fmt):now.strftime(fmt)] 

:

In [17]: now = pd.datetime(2013, 7, 20) # since thats when the data is from 

In [18]: yesterday = now + datetime.timedelta(days=-1) 

In [19]: df.ix[yesterday.strftime(fmt):now.strftime(fmt)] 
Out[19]: 
         B  C  D 
time           
2013-07-19 14:54:03 92.20 1453.44 7746.56 
2013-07-19 14:56:02 44.60 1399.83 7800.17 
2013-07-19 14:58:02 33.93 1325.31 7874.69 

[3 rows x 3 columns] 

는 또한 datetime 부품을 교체 할 수있는 arrow 도서관에서 봐. 이런 종류의 일에 환상적입니다.

+0

감사합니다. 코드를 사용해 보았지만 KeyError : '2012-12-16'메시지가 나타납니다. 시리즈를 사용해야합니까? – user3009782

+0

DataFrame에서 작동해야합니다. 색인이 ['DatetimeIndex']인지 확인하십시오 (http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DatetimeIndex.html). 슬라이스에서 DatetimeIndex에'.ix'를':'와 함께 사용하면'KeyError'를 얻지 않아야합니다. 최악의 경우 빈 DataFrame을 반환합니다. – TomAugspurger

관련 문제