是否可以像元组一样将多个功能应用于熊猫滚动窗口?
我当前正在通过滚动窗口上的价格序列计数来返回最大仓的计数,下限和上限。
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_data)的不同值(项目和索引)。
有没有一种方法可以将这些值组合在一起,以便可以返回所有三个值?
我无法在.apply()方法中调用列表,元组或设置,还有其他方法吗?
最佳答案
您可以使用aggregate做更灵活的事情...
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或使它们具有适当的功能。
关于python - Python Pandas滚动窗口应用了多个lambda函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44961212/