0
팬더 0.15.0의 index.set_levels 함수로 이상한 관찰을 관찰합니다. 추측과 함께 유럽/파리로 시간대를 변경하면 10 월 2am 시간이 3 배가됩니다.set_levels 함수로 DST 시간 다루기 [multindex pandas]
누구에게이 문제를 해결하기위한 해결책이 있습니까?
array = [('s001', d) for d in pd.date_range(start='01/01/2014', end='01/01/2015', freq='H')] + [('s002', d) for d in pd.date_range(start='01/01/2014', end='01/01/2015', freq='H')]
index = pd.MultiIndex.from_tuples(array, names=['sce', 'DATES'])
df = pd.DataFrame(np.random.randn(len(index)), index=index)
df = df.append(df.query('DATES == "26/10/2014 02:00:00"'))
df = df.query('DATES <> "30/03/2014 02:00:00"')
df = df.sort()
df[7151:7160]
출력은 : 다음
sce DATES
s001 2014-10-26 00:00:00 0.342909
2014-10-26 01:00:00 -0.575897
2014-10-26 02:00:00 -1.469307 <<<< ok
2014-10-26 02:00:00 -1.469307 <<<< ok
2014-10-26 03:00:00 -1.277365
2014-10-26 04:00:00 1.252814
:
가df.index = df.index.set_levels(df.index.get_level_values(1).tz_localize('Europe/Paris', ambiguous = 'infer'), level=1)
df[7151:7160]
출력은 : 다음
sce DATES
s001 2014-10-26 01:00:00+02:00 0.342909
2014-10-26 02:00:00+02:00 -0.575897 <<<< nok
2014-10-26 02:00:00+01:00 -1.469307 <<<< ok
2014-10-26 02:00:00+01:00 -1.469307 <<<< nok
2014-10-26 03:00:00+01:00 -1.277365
2014-10-26 04:00:00+01:00 1.252814
경우 I g을 오 간단한 색인을 통해
df = df.reset_index('sce')
df = df.tz_localize('Europe/Paris', ambiguous = 'infer')
df = df.set_index('sce', append=True)
df[7151:7160]
출력은 다음과 같습니다
DATES sce
2014-10-26 00:00:00+02:00 s001 0.342909 <<<< ok
2014-10-26 01:00:00+02:00 s001 -0.575897 <<<< ok
2014-10-26 02:00:00+02:00 s001 -1.469307 <<<< ok
2014-10-26 02:00:00+01:00 s001 -1.469307 <<<< ok
2014-10-26 03:00:00+01:00 s001 -1.277365 <<<< ok
2014-10-26 04:00:00+01:00 s001 1.252814 <<<< ok
두 번째 방법은 좋은 결과를 제공하지만 매우 이상 큰 multiindex의 (날짜 16000 및 SCE 200) dataframe
나는 0.15.2 :) Thx에 대한 수정을 계획했다. –
예, 우리는 곧 0.15.1을 릴리스 할 예정이므로 다음 릴리스에서 제공 될 예정입니다. 당겨 요청은 환영합니다! – Jeff