Существует проблема Pandas (описанная в # 22619 и связанная с # 9119 ), которая не позволяет группировать данные по неделям, если их DateTimeIndex имеет был локализован.
Я читаю из базы данных UTC данные, которые я хочу сгруппировать по местному времени, но это не может быть сделано из-за этой проблемы.
Я нашел обходной путь, рассчитав индекс недели по юлианскому дню и используя его для группировки:
df["week"] = ((df.index.to_julian_date()+0.5)/7).astype(int)
grouped = df.groupby(df["week"])
Мне любопытно еще одна возможность, но я не знаю синтаксиса Панд .
Я хочу изменить исходный индекс на основе UTC на местное время, но без сохранения информации о tz: без информации о tz => без ошибок.
import pandas as pd
print("UTC from database:")
df = pd.DataFrame({'DTIME': [pd.datetime(2018,12,20,10,20,30)],
'VALUES': [123]}).set_index("DTIME")
print(df)
print("-------------------------")
print("UTC localized:")
df = df.tz_localize("utc")
print(df)
print("-------------------------")
print("Europe/Berlin localized:")
df = df.tz_convert("Europe/Berlin")
print(df)
print("-------------------------")
print("Local Time index as string")
df.index = df.index.strftime("%Y-%m-%d %H:%M:%S")
print(df)
возвращается:
UTC from database:
VALUES
DTIME
2018-12-20 10:20:30 123
-------------------------
UTC localized:
VALUES
DTIME
2018-12-20 10:20:30+00:00 123
-------------------------
Europe/Berlin localized:
VALUES
DTIME
2018-12-20 11:20:30+01:00 123
-------------------------
Local Time index as string
VALUES
2018-12-20 11:20:30 123
Конечно, я не могу группировать по строкам.
Из любопытства, как это можно сделать?