使用Swifter调用rolling()时出现‘__init__() got an unexpected keyword argument 'axis'’错误
使用Swifter调用rolling()时出现"init() got an unexpected keyword argument 'axis'"错误的解决方法
问题原因
这个错误是版本兼容问题导致的:swifter 1.4.0在处理rolling调用时,会默认传递axis参数给dask的Rolling类,但当前环境的dask版本不支持该参数。从报错栈可以看到,swifter内部调用dask的rolling方法时,传入了dask Rolling初始化不接受的axis参数,触发了类型错误。
解决方法
方案一:显式指定axis=None
修改rolling调用,手动传入axis=None覆盖swifter的默认值,避免将该参数传递给dask:
df_pd.swifter.set_npartitions(npartitions=8).progress_bar(True).rolling(5, axis=None).apply(np.mean)
方案二:升级swifter到最新版本
swifter后续版本已修复该参数兼容问题,执行以下命令更新:
pip install --upgrade swifter
方案三:直接使用pandas原生rolling(数据量不大时)
如果你的数据集不需要分布式计算加速,可去掉swifter调用,直接用pandas原生的rolling方法:
df_pd.rolling(5).apply(np.mean)
内容的提问来源于stack exchange,提问作者jad
相关产品推荐
相关产品推荐

