首页 > 解决方案 > Pandas/Python 如何为特定变量值创建平均值?

问题描述

我是使用 Pandas/python 的新手,我想知道,当我有一个数据集时,我如何从一个变量、数量、另一个变量的每个值、价格、如果变量小时在某些特定值之间创建平均值,让我们说 1 到 10。为了更好地理解我所拥有的内容如下:

excel-列

我想要获得的是以下绿色的价格和数量列;这是 1<=hour<=10 时每个价格的平均成交量。

结果

我将衷心感谢您的帮助!

提前致谢!

标签: pythondatabaseif-statementaveragepandas-groupby

解决方案


快速提示:如果您发布问题,请提供有关如何创建数据框的启动代码(而不是发布屏幕截图),因为它使帮助您的人更容易。

第 1 步:使用掩码过滤数据框

第 2 步:使用掩码创建新的数据框

第三步:使用 groupby 对象

import pandas as pd

# sample dataframe
df = pd.DataFrame({
    'Hour': [1, 1, 1, 4, 4, 4, 16, 16, 16],
    'Price': [-3000, -262, 150, -3000, -262, 150, -3000, -262, 150],
    'Volume': [8133, 28287, 19289, 20242, 19428, 28322, 18147, 17234, 12133],
})

print('Raw dataframe:')
print(df, '\n')

# first create a mask that filters the data you want
mask_hour_1to10 = df['Hour'].between(1, 10)

# second create a new dataframe with the mask
df_filtered = df.loc[mask_hour_1to10]

print('Filtered dataframe:')
print(df_filtered, '\n')

# third, use a groupby object on price, to calculate average of volume
df_groupby_mean = df_filtered.groupby('Price')['Volume'].mean()

print('Groupby Object:')
print(df_groupby_mean)

在此处输入图像描述


推荐阅读