2014-07-17 5 views
3

파이썬에서 시계열 분석을 위해 팬더 라이브러리를 사용하려고합니다.사전 목록에서 팬더 타임 시리즈 인덱스

mydata = [ 
{ 
    'date': datetime.date(2013, 1, 1), 
    'snow_depth': 1.0, 
}, { 
    'date': datetime.date(2013, 1, 2), 
    'snow_depth': 2.5, 
}, { 
    'date': datetime.date(2013, 1, 3), 
    'snow_depth': 8.0, 
}, 
] 

나는 DataFrame 얻기 위해 다음 명령을 사용하십시오 : 내 데이터는 이제 사전의 목록으로 저장됩니다

df = pd.DataFrame(mydata).set_index('date') 

을하지만 지수는 있지만 단지로하는 DateTimeIndex로 인식되지 않습니다 목적 :

df.index 

반환 : Index([2013-01-01, 2013-01-02, 2013-01-03], dtype='object')

그래서 Pandas에서 시계열 연산을 할 수 없습니다. 월별 집계 등등. 나는 DateTimeIndex로 인덱스를 필요로 할 때

<class 'pandas.tseries.index.DatetimeIndex'> 
[2013-01-01, ..., 2013-01-03] 
Length: 3, Freq: D, Timezone: None 

가 어떻게 목록에서 DataFrame을 만들려면 어떻게해야합니까 : 나는 df.index를 실행하면 내가 좋아하는 뭔가를 얻을 것으로 예상하고있어?

+1

시도, df.index = pd.to_datetime (df.index) –

답변

1

또한 직접 DatetimeIndex에 인덱스를 변환 할 수 있습니다

In [159]: df.index = pd.DatetimeIndex(df.index) 

In [160]: df.index 
Out[160]: 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2013-01-01, ..., 2013-01-03] 
Length: 3, Freq: None, Timezone: None 
2

팬더 DateTimeIndex은 약간 특이 할 수 있습니다. 예를 들어, datetime.date 값을 좋아하지 않습니다. 그러나 값을 datetime.datetime 값으로 변경하면 예상대로 작동합니다. 같은 전화 서명, 심지어.

import datetime 
import pandas as pd 
mydata = [ 
{ 
    'date': datetime.datetime(2013, 1, 1), 
    'snow_depth': 1.0, 
}, { 
    'date': datetime.datetime(2013, 1, 2), 
    'snow_depth': 2.5, 
}, { 
    'date': datetime.datetime(2013, 1, 3), 
    'snow_depth': 8.0, 
}, 
] 

df = pd.DataFrame(mydata).set_index('date') 

최근 버전을 실행하고 있는지 확인하십시오. 0.11 이하는 DateTimeIndex과 관련된 오류가 발생하는 경우에 특히 더 유용합니다.