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).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'](的同一滚动窗口(['mid'](上返回同一函数(qcut_data(的不同值(项目和索引(。

有没有办法组合这些值以便返回所有三个值?

我不能在 .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 或使它们成为适当的函数。

最新更新