繁体   English   中英

在 pandas 中应用 pd.cut 跨滚动 windows

[英]Apply pd.cut across rolling windows in pandas

假设我有一个 dataframe ,如下所示:

df = pd.DataFrame({"a": np.random.random_integers(1, high=10, size=50)})

我可以将此 dataframe 切割成最小值和最大值之间的百分比片段(以下 1% 的片段),并放置间隔和出现次数:

df["bins"] = pd.cut(df['a'], np.arange(df["a"].min(), df["a"].max()*1.01, 1), include_lowest=True)
df["counts"] = df.groupby(df["bins"]).transform("count")

我想要实现的是,我想在 dataframe 的预定义 windows 中应用相同的功能。 例如,如果 window 值为 10,它应该为每个连续的 10 个周期创建相同的“绑定”和“计数”值。 我知道我可以使用df["a"].rolling(10)但我无法将其与cut的 function 相关联。 有没有有效的方法来做到这一点?

你可以使用滚动应用

df = pd.DataFrame({"a": np.random.randint(1, high=10, size=50)})
def f(s):
    d = s.to_frame().groupby(pd.cut(s, np.arange(s.min(), s.max()*1.01, 1), include_lowest=True)).transform("count")
    return d[0].mean()

df["a"].rolling(10).apply(f)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM