存在一个熊猫问题(在#22619进行了描述,并链接到#9119),如果 DateTimeIndex 已本地化,则不允许按周分组数据。
>我正在从数据库中读取我想按本地时间进行分组的基于UTC的数据,但是由于这个问题,无法做到这一点。
我找到了一种变通方法,方法是通过计算儒略日的星期指数并将其分组:
df["week"] = ((df.index.to_julian_date()+0.5)/7).astype(int)
grouped = df.groupby(df["week"])
我对另一种可能性感到好奇,但我不知道Pandas语法。
我想将基于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
我当然不能按字符串分组。
出于好奇,该怎么办?