繁体   English   中英

如何根据唯一元素合并DataFrame中的行并获取平均值?

[英]How to merge rows in DataFrame according to unique elements and get averages?

我正在努力弄清楚如何实现这一目标。 我正在尝试获取dayhour条目的平均price 所以像

    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 

我想将其推广到更大的数据集。

您可以按日期和小时列分组,然后在价格列上调用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM