基于MultiIndex的Pandas DataFrame重采样及偏移量使用:调整时区适配的日最大值输出日期格式
解决方案
你可以通过两种简洁的方式实现期望的输出格式,核心思路是对齐UTC时间与+11时区的日期映射,再提取纯日期格式:
方法一:先转时区再分组(更直观推荐)
直接把UTC时间转换为+11时区的时间,按该时区的自然日期分组计算最大值,结果的时间列会直接匹配你想要的格式:
# 先重置索引,方便单独处理time列 df_reset = df.reset_index() # 将UTC时间转为+11时区,再提取日期部分 df_reset['local_date'] = df_reset['time'].dt.tz_localize('UTC').dt.tz_convert('Etc/GMT-11').dt.date # 按纬度、经度和本地日期分组,计算FFDI最大值 df_daily_max = df_reset.groupby(['latitude', 'longitude', 'local_date'])['FFDI'].max().reset_index(name='Max FFDI') # 把列名改回time(可选,根据你的习惯调整) df_daily_max = df_daily_max.rename(columns={'local_date': 'time'})
方法二:基于现有分组结果调整时间列
如果你想沿用当前的分组逻辑,只需对生成的df_daily_max做时间格式修正即可:
# 把分组后的UTC时间转成+11时区,然后提取纯日期 df_daily_max['time'] = df_daily_max['time'].dt.tz_localize('UTC').dt.tz_convert('Etc/GMT-11').dt.date
逻辑说明
你的原始分组规则中,base=13定义的UTC时间段(前一天13:00到当天12:00),转换为+11时区正好对应完整的一天。比如UTC的2013-12-31 13:00就是+11时区的2014-01-01 00:00,提取日期后完全匹配你期望的输出标识。
调整后的输出示例:
latitude longitude time Max FFDI 0 -39.200000762939453 140.80000305175781 2014-01-01 6.199999809265137 1 -39.200000762939453 140.80000305175781 2014-01-02 1.5 2 -39.200000762939453 140.80000305175781 2014-01-03 1.6000000238418579 ...
内容的提问来源于stack exchange,提问作者alextc
相关产品推荐
相关产品推荐

