百分位数重采样

Resampling with percentiles

我有一个包含一些数值和日期时间戳的数据框。

我想做的是将数据聚合到月度间隔中,输出每个月的最大百分位值。

到目前为止我一直在做的只是使用:

df = df.resample('M', on='ds').max()

这给了我那个月的最大值。但是,根据我在数据中看到的情况,通常每个月都会出现一两个峰值。结果是,通过使用 max() 我将得到那个尖峰值——这是不正确的。所以我想过滤掉几个高值峰值我想知道我是否可以使用百分位函数而不是 max(),例如:

np.percentile(df['y'], 99)

据我所知,resample 函数不提供使用自己的函数的选项。但我可能是错的?无论如何,如何才能做到这一点?

GroupBy.agg中使用自定义lambda函数:

df = df.resample('M', on='ds')['y'].agg(lambda x: np.percentile(x, 99))