Ral*_*lph 4 python lambda pandas
是否可以以类似元组的方式将多个函数应用于 Pandas 滚动窗口?
我目前正在创建通过滚动窗口上的价格系列计数返回最大 bin 的计数、下限和上限。
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)
Run Code Online (Sandbox Code Playgroud)
这让我感到非常低效,因为我只是在同一系列的同一滚动窗口 (df_m['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])
Run Code Online (Sandbox Code Playgroud)
但是您需要按摩生成的框架才能加入它。您还可以命名 lambdas 或使它们成为正确的函数。
| 归档时间: |
|
| 查看次数: |
2103 次 |
| 最近记录: |