我正在努力弄清楚如何实现这一目标。我正在尝试为每个price
和day
条目获取平均值hour
。所以像
day hour price booked
0 monday 7 12.0 True
1 monday 8 12.0 False
2 tuesday 7 13.0 True
3 tuesday 8 13.0 False
4 monday 7 15.0 True
5 monday 8 13.0 False
6 tuesday 7 13.0 True
7 tuesday 8 15.0 False
应该给出类似的东西:
day hour avg. price
0 monday 7 13
1 monday 8 12.5
2 tuesday 7 13.0
3 tuesday 8 14.0
我希望这可以概括为更大的数据集。
答案 0 :(得分:2)
您可以按天和小时列进行分组,然后在价格列上调用mean
:
In [46]:
df.groupby(['day','hour'])['price'].mean()
Out[46]:
day hour
monday 7 13.5
8 12.5
tuesday 7 13.0
8 14.0
Name: price, dtype: float64
要将日期和小时恢复为列,您可以调用reset_index
:
In [47]:
df.groupby(['day','hour'])['price'].mean().reset_index()
Out[47]:
day hour price
0 monday 7 13.5
1 monday 8 12.5
2 tuesday 7 13.0
3 tuesday 8 14.0
如果您愿意,也可以重命名该列:
In [48]:
avg = df.groupby(['day','hour'])['price'].mean().reset_index()
avg.rename(columns={'price':'avg_price'},inplace=True)
avg
Out[48]:
day hour avg_price
0 monday 7 13.5
1 monday 8 12.5
2 tuesday 7 13.0
3 tuesday 8 14.0