我有一个带有一些数值和日期时间戳的数据帧。
我想做的是将数据聚合到每月的间隔中,每个月输出一个最大百分位数。
到目前为止,我所做的只是使用:
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))