我有一个由小时电价数据组成的数据帧。我想做的是找到一种方法来计算一天中n个最低价小时的平均值。该数据跨越多年,旨在获得每天n个最低价时段的平均值。可以使用以下方法创建合成数据:
np.random.seed(0)
rng = pd.date_range('2020-01-01', periods=24, freq='T')
df = pd.DataFrame({ 'Date': rng, 'Price': np.random.randn(len(rng)) })
我已经设法通过使用获得了每天的最低价格
df_max = df.groupby([pd.Grouper(key='Date', freq='D')]).min()
有没有办法得到一天中n个最低时段的平均值?
提前感谢您的帮助。
我们可以按每日频率的Grouper
对象对数据帧进行分组,然后使用nsmallest
聚合Price
以获得n
的最小值,现在计算level=0
上的mean
以获得一天中n
最小值的平均值
df.groupby(pd.Grouper(key='Date', freq='D'))['Price'].nsmallest(5).mean(level=0)
5
最小值每日平均值的计算结果
Date
2020-01-01 -1.066337
Name: Price, dtype: float64
您也可以尝试以下操作:
bottom_5_prices\mean=df.sort_index(升序=True(.head(5([价格].mmean((top_5_prices\mean=df.sort_index(升序=True(.tail(5([价格].mmean((