如何通过方法名字符串调用pandas Rolling对象的任意聚合函数
pandas Rolling对象动态指定方法名调用聚合操作的解决方案
问题根因
Rolling对象没有将mean、median、max、min等聚合方法直接作为实例属性暴露,因此直接调用__getattr__方法无法获取到对应方法,会触发AttributeError。
解决方案
使用Rolling对象内置的agg()(别名aggregate())聚合入口,该方法原生支持传入方法名字符串来动态调用对应聚合逻辑,完全匹配使用需求。
基础用法示例
import pandas as pd method_name = 'mean' # 直接传入方法名字符串即可完成调用 result = pd.Series([1, 2, 3]).rolling(window=1).agg(method_name)
带参数的聚合方法调用示例
如果调用的方法需要额外传参(比如quantile需要指定分位值),直接在agg方法中追加参数即可:
method_name = 'quantile' # 调用quantile方法并指定分位值为0.5 result = pd.Series([1, 2, 3, 4, 5]).rolling(window=3).agg(method_name, q=0.5)
以上方案对所有pandas Rolling支持的聚合方法都生效。
内容的提问来源于stack exchange,提问作者David Masip
相关产品推荐
相关产品推荐

