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

Pandas Rolling Apply报错:apply()收到意外关键字参数mean

解决Pandas Rolling Apply传递额外参数的问题

嘿,这个问题我之前也碰到过!你出错的核心原因是:rolling().apply()方法本身的参数列表里并没有你自定义的mean参数,直接把mean=mean作为apply的关键字参数传入,自然会触发TypeError: apply() got an unexpected keyword argument 'mean'的错误。

要给自定义函数传递额外参数,你需要用到apply()专门提供的args或kwargs参数,下面给你两种可行的解决方案:

方案1:使用args传递位置参数

把额外参数打包成元组传给args参数(哪怕只有一个参数,也要加逗号保证是元组类型,避免被识别成单个元素):

import pandas as pd

df_test = pd.DataFrame(columns=['amount'])
df_test['amount'] = [1, 2, 3, 4, 5]
mean = df_test['amount'].mean()

def rule(x, mean):
    x = x - mean
    return sum(x)

# 用args传递mean参数
result = df_test['amount'].rolling(3).apply(rule, args=(mean,))
print(result)

方案2:使用kwargs传递关键字参数

把额外参数整理成字典传给kwargs参数,字典的键名要和自定义函数的参数名完全一致:

import pandas as pd

df_test = pd.DataFrame(columns=['amount'])
df_test['amount'] = [1, 2, 3, 4, 5]
mean = df_test['amount'].mean()

def rule(x, mean):
    x = x - mean
    return sum(x)

# 用kwargs传递mean参数
result = df_test['amount'].rolling(3).apply(rule, kwargs={'mean': mean})
print(result)

两种方案都能正常运行,输出结果如下:

0         NaN
1         NaN
2   -3.000000
3   -1.000000
4    1.000000
Name: amount, dtype: float64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:57:58