2014-07-17 4 views
1

나는 팬더 0.14.1을 사용 중입니다. 시간대를 사용하는 계층 적 인덱스에서 두 개의 타임 스탬프로 데이터를 인덱싱해야한다고 가정합니다. 여기hyerarchical pandas를 저장할 때 시간대 인식을 잃음 Python에서 DatetimeIndex를 hdf5로 변경

import pandas as pd 
dti1 = pd.DatetimeIndex(start=pd.Timestamp('20000101'), end=pd.Timestamp('20000102'), freq='D', tz='EST5EDT') 
dti2 = pd.DatetimeIndex(start=pd.Timestamp('20000102'), end=pd.Timestamp('20000103'), freq='D', tz='EST5EDT') 
mux = pd.MultiIndex.from_arrays([dti1, dti2]) 
df = pd.DataFrame(0, index=mux, columns=['a']) 

df이 시간대가 있습니다 : 생성 된 DataFrame를 저장할 때 나는 시간대 인식 잃을 것 HDF5하는

             a 
2000-01-01 00:00:00-05:00 2000-01-02 00:00:00-05:00 0 
2000-01-02 00:00:00-05:00 2000-01-03 00:00:00-05:00 0 

저장 및 로딩 후 HDF5하기를, 시간대 정보가 사라질 것 같다

df.to_hdf('/tmp/my.h5', 'data') 
pd.read_hdf('/tmp/my.h5', 'data') 

결과 :

          a 
2000-01-01 05:00:00 2000-01-02 05:00:00 0 
2000-01-02 05:00:00 2000-01-03 05:00:00 0 

좋은 해결 방법이 있는지 여부와 이것이 알려진 버그인지 궁금합니다.

답변

3

다중 색인을 사용할 때형식으로 지원되지 않습니다. 나는 아마도 내가 가정하지 않은 인상을해야합니다. 여기 this

이 풀 HDF5 인터페이스 문서 here

In [11]: pd.read_hdf('/tmp/my.h5', 'data').index.levels[0] 
Out[11]: 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2000-01-01 05:00:00, 2000-01-02 05:00:00] 
Length: 2, Freq: None, Timezone: None 

을 참조하십시오 추적하는 문제입니다하지만 당신은 table 형식을 지정하면 작동합니다.

In [13]: df.to_hdf('/tmp/my.h5', 'data2', format='table') 

In [14]: pd.read_hdf('/tmp/my.h5', 'data2') 
Out[14]: 
                a 
2000-01-01 00:00:00-05:00 2000-01-02 00:00:00-05:00 0 
2000-01-02 00:00:00-05:00 2000-01-03 00:00:00-05:00 0 

In [15]: pd.read_hdf('/tmp/my.h5', 'data2').index.levels[0] 
Out[15]: 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2000-01-01 00:00:00-05:00, 2000-01-02 00:00:00-05:00] 
Length: 2, Freq: None, Timezone: EST5EDT 

In [16]: pd.read_hdf('/tmp/my.h5', 'data2').index.levels[1] 
Out[16]: 
<class 'pandas.tseries.index.DatetimeIndex'> 
[2000-01-02 00:00:00-05:00, 2000-01-03 00:00:00-05:00] 
Length: 2, Freq: None, Timezone: EST5EDT 
+0

실제로 예외를 던지는 것이 더 합리적일까요? 그 문제를 추가해 주셔서 감사합니다! –

+0

비슷한 자연과 관련하여 더 많은 것을 찾았습니다. http://stackoverflow.com/questions/24830952/changing-timezone-on-pandas-datetimeindex-when-concatenating-dataframes-in-pytho –