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

如何在Pandas中修改时间序列频率时保持数据尺寸不变

时间戳按10分钟区间向下取整的实现

转换示例

转换前数据

import pandas as pd
bf_data = pd.DataFrame({"ts":['2020-1-1 00:03:00','2020-1-1 00:12:00','2020-1-1 00:07:00','2020-1-1 00:18:00','2020-1-1 00:22:00'],'values':[0.2,0.3,0.5,0.9,1]})

转换后数据

af_data = pd.DataFrame({"ts":['2020-1-1 00:00:00','2020-1-1 00:10:00','2020-1-1 00:00:00','2020-1-1 00:10:00','2020-1-1 00:20:00'],'values':[0.2,0.3,0.5,0.9,1]})

需求说明

  • 转换后的数据af_data需与原数据bf_data维度完全一致
  • 对bf_data["ts"]中的时间戳按分钟区间取整:
    • 分钟数在[0,10)区间 → 转换为'2020-1-1 00:00:00'
    • 分钟数在[10,20)区间 → 转换为'2020-1-1 00:10:00'
    • 以此类推,每10分钟为一个区间,向下取整到区间起始时间

实现代码

import pandas as pd

# 原始数据
bf_data = pd.DataFrame({"ts":['2020-1-1 00:03:00','2020-1-1 00:12:00','2020-1-1 00:07:00','2020-1-1 00:18:00','2020-1-1 00:22:00'],'values':[0.2,0.3,0.5,0.9,1]})

# 将ts列转换为datetime类型,便于时间操作
bf_data['ts'] = pd.to_datetime(bf_data['ts'])

# 按10分钟频率向下取整,再转回指定字符串格式
bf_data['ts'] = bf_data['ts'].dt.floor('10min').dt.strftime('%Y-%m-%d %H:%M:%S')

# 得到符合要求的转换后数据
af_data = bf_data.copy()

# 验证输出
print(af_data)

代码说明

  1. 时间类型转换:把字符串格式的ts列转为pandas的datetime类型,是后续时间区间处理的基础
  2. 10分钟区间取整:dt.floor('10min')方法直接将时间戳向下对齐到最近的10分钟起始点,完美匹配需求的区间规则
  3. 格式转回字符串:用dt.strftime()将处理后的datetime对象转回需求的字符串格式
  4. 维度一致性保障:直接在原数据列上修改后复制,确保转换后的数据shape与原数据完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:07:15