一天中 n 个最低价格每小时间隔的平均值 pandas 数据帧

Average of n lowest priced hourly intervals in a day pandas dataframe

我有一个由每小时电价数据组成的数据框。我想做的是找到一种方法来计算一天中 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 最小值,现在计算 meanlevel=0 上获取一天中 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(升序=真).head(5)['Price'].mean() top_5_prices_mean=df.sort_index(升序=真).tail(5)['Price'].mean()