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

如何在Pandas DataFrame中对非UTC时间数据进行重采样?

Pandas非UTC时区DataFrame重采样解决方案

完全不需要将数据强制转换为UTC时区,只要你的DataFrame索引是时区感知的datetime类型,就可以直接完成重采样操作,步骤如下:

1. 确保索引为带时区的datetime类型

首先检查当前索引的类型:

print(df.index.dtype)
  • 如果索引是object类型(字符串格式时间),先转换为带时区的datetime:
    # 替换为你的数据实际时区,比如'Asia/Shanghai'、'Europe/London'等
    df.index = pd.to_datetime(df.index).tz_localize('你的时区标识')
    
  • 如果索引已经是datetime但无时区信息,直接添加时区:
    df.index = df.index.tz_localize('你的时区标识')
    
  • 如果索引时区不正确,可转换为目标时区:
    df.index = df.index.tz_convert('你的目标时区标识')
    

2. 执行10分钟频率重采样

索引处理完成后,直接使用resample方法,根据需求选择聚合函数(如均值、求和、取最后一条数据等):

# 重采样为10分钟,以均值聚合为例,可替换为sum()、last()等
resampled_df = df.resample('10T').mean()

完整示例

假设你的数据索引是字符串格式的本地时间,时区为'Asia/Shanghai',完整代码如下:

import pandas as pd

# 模拟你的数据(仅示例)
data = {'value': [1,2,3,4,5,6,7,8,9,10]}
times = ['2024-05-20 09:01:00', '2024-05-20 09:02:00', '2024-05-20 09:03:00',
         '2024-05-20 09:04:00', '2024-05-20 09:05:00', '2024-05-20 09:06:00',
         '2024-05-20 09:07:00', '2024-05-20 09:08:00', '2024-05-20 09:09:00',
         '2024-05-20 09:10:00']
df = pd.DataFrame(data, index=times)

# 转换索引为带时区的datetime
df.index = pd.to_datetime(df.index).tz_localize('Asia/Shanghai')

# 重采样为10分钟频率
resampled_df = df.resample('10T').mean()

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:02:40