簡體   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