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

Pandas on Spark重采样报错:规则码不支持及datetime类型错误

解决PySpark Pandas API重采样及时间操作错误的方案

一、resample规则不支持的问题

Pandas on Spark的resample方法不兼容原生Pandas的规则缩写(比如'1min'、's'),需要使用Spark标准的时间间隔全称格式,比如'1 minute'、'60 seconds'、'1 hour'。

正确的1分钟粒度重采样代码:

# 按1分钟粒度重采样并计算均值
df.resample('1 minute').mean()

也可以用等价的秒数写法:

df.resample('60 seconds').mean()

二、时间索引floor/round操作的类型错误问题

Pandas on Spark的datetime索引底层对应Spark的Timestamp类型,直接调用index.floor()这类原生Pandas方法会触发类型兼容错误,推荐以下两种解决方式:

方法1:将索引转为列,用Spark原生时间函数处理后重置索引

from pyspark.sql import functions as F

# 将时间索引转为普通列
df = df.reset_index()
# 对时间列执行floor操作(示例为按秒粒度)
df = df.withColumn("timestamp", F.floor_date(df["timestamp"], "second"))
# 重新设置时间列为索引
df = df.set_index("timestamp")

方法2:若时间字段为普通列,直接使用dt访问器处理

如果时间数据不是索引而是普通列,可直接用Pandas on Spark的dt访问器操作:

# 假设时间列名为timestamp,按秒粒度floor
df["timestamp"] = df["timestamp"].dt.floor("second")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:52:07