You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 12:42:40