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

Pandas按Cycle#分组计算二阶导数遇报错:Series对象不可哈希

错误原因与修复方案

为什么报错?

你的代码核心问题在于:groupby.apply()的参数用了基于整个Data3的Value列计算逻辑,而非针对每个分组的子数据操作。

apply方法要求传入的是一个能处理单个分组数据的函数,但你直接塞了一个全局生成的Series对象。Python中可变对象(比如Series)无法被哈希,因此触发了TypeError: 'Series' objects are mutable, thus they cannot be hashed错误。

简单来说:你没有在分组内部执行二阶导数计算,反而把整个数据集的运算结果扔给apply,导致类型不匹配。

正确写法

要实现按Cycle#分组计算二阶导数,必须在每个分组的子Series上执行shift和运算:

# 用lambda简洁实现
Data3['Diff2'] = Data3.groupby('Cycle#')['Value'].apply(
    lambda x: x - 2 * x.shift(1) + x.shift(2)
)

或者用命名函数提升可读性:

def compute_second_derivative(series):
    return series - 2 * series.shift(1) + series.shift(2)

Data3['Diff2'] = Data3.groupby('Cycle#')['Value'].apply(compute_second_derivative)

这样每个分组内的Value列会独立计算二阶导数,结果会自动对齐原DataFrame的索引,不会再触发哈希错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:27:37