[英]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.