Python窗口应用多个lambda函数

Python窗口应用多个lambda函数,python,pandas,lambda,Python,Pandas,Lambda,是否可以以类似元组的方式对滚动窗口应用多个函数 我目前正在创建一个滚动窗口,返回一个价格系列的最大仓位的计数、下限和上限 def qcut_data(x): data_out = pd.qcut(x, q = 10, duplicates = 'drop').value_counts().nlargest(1) return data_out df_m['hist_count'] = df_m['mid'].rolling(window = rolling_window).a

是否可以以类似元组的方式对滚动窗口应用多个函数

我目前正在创建一个滚动窗口,返回一个价格系列的最大仓位的计数、下限和上限

def qcut_data(x):
    data_out = pd.qcut(x, q = 10, duplicates = 'drop').value_counts().nlargest(1)
    return data_out


df_m['hist_count'] = df_m['mid'].rolling(window = rolling_window).apply(lambda x: qcut_data(x).item())
df_m['hist_bottom'] = df_m['mid'].rolling(window = rolling_window).apply(lambda x: qcut_data(x).index[0].left)
df_m['hist_top'] = df_m['mid'].rolling(window = rolling_window).apply(lambda x: qcut_data(x).index[0].right)
这让我感到非常低效,因为我只是在同一系列(df_m['mid'])的同一滚动窗口上返回同一函数(qcut_数据)的不同值(项和索引)

有没有一种方法可以将这三个值组合起来,从而可以返回所有三个值


我不能在.apply()方法中调用列表、元组或集合,还有其他方法吗?

您可能可以使用更灵活的方法执行您想要的操作

df_m['mid'].rolling(window=rolling_window).agg([lambda x: qcut_data(x).item(),
                                                lambda x: qcut_data(x).index[0].left,
                                                lambda x: qcut_data(x).index[0].right])
但是你需要按摩产生的框架来加入它。您还可以将lambda命名或使其成为正确的funcs