Pandas:移除时区重采样后如何恢复数据列的时区信息
如何保存并恢复Pandas重采样时的时区信息
嘿,这事儿好办!你只需要在移除时区之前先把原始的时区信息存下来,等重采样完成后再把它加回去就行。具体步骤如下:
步骤1:保存原始时区信息
在执行tz_localize(None)移除时区前,先提取并保存timestamp列的时区:
# 提取原始时区(确保你的timestamp列所有值时区一致) original_timezone = df['timestamp'].dt.tz
小提示:如果你的
timestamp列里存在多个不同时区的值,建议先统一时区再操作,不然保存单个时区会有问题哦。
步骤2:移除时区并执行重采样
这部分就是你原本的操作,没问题:
# 移除时区转为naive datetime df['timestamp'] = df['timestamp'].dt.tz_localize(None) # 按小时重采样取均值 df = df.resample('1H', on='timestamp').mean()
步骤3:恢复时区到重采样后的索引
重采样完成后,你的timestamp会变成DataFrame的索引,直接给索引加上之前保存的时区就行:
# 给重采样后的索引恢复原始时区 df.index = df.index.tz_localize(original_timezone)
完整代码示例
把上面的步骤整合起来就是:
# 保存原始时区 original_timezone = df['timestamp'].dt.tz # 移除时区 df['timestamp'] = df['timestamp'].dt.tz_localize(None) # 重采样操作 df = df.resample('1H', on='timestamp').mean() # 恢复时区 df.index = df.index.tz_localize(original_timezone)
这样操作后,重采样后的时间索引就会和你原始数据的时区一致啦~
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

