首页 > 解决方案 > Pandas 中命名的滚动聚合自定义函数

问题描述

我找不到正确命名应用于滚动窗口的自定义聚合函数的方法。 这个答案很好地解释了groupby聚合。我试过使用pd.NamedAggregates,像这样

df
.rolling(f"{num_days_window + 1}D", min_periods=day_length)            
.aggregate(time_mean=pd.NamedAgg(column="time", aggfunc=lambda w: window_daily_stats(w, np.mean)),
           time_std=pd.NamedAgg(column="time", aggfunc=lambda w: window_daily_stats(w, np.std)))

用于命名的嵌套字典已被弃用,因此这不是一个选项。传递元组也不起作用。

.rolling(f"{num_days_window + 1}D", min_periods=day_length)
.aggregate(time_mean=("time", lambda w: window_daily_stats(w, np.mean)),
           time_std=("time", lambda w: window_daily_stats(w, np.std)))

在这两种情况下,错误是相同的:

TypeError: aggregate() missing 1 required positional argument: 'func'

我目前这样做的方式是向聚合函数传递一个包含column: list of functions对的字典,但在这种情况下,结果列被命名

('time', '<lambda>'),
('time', '<lambda>'), 

不幸的是,这并没有给我列的唯一值索引对象。

总而言之,我的问题是,如何为滚动窗口的自定义函数创建命名聚合?

标签: pythonpandas

解决方案


推荐阅读