Python 如何获得平均每小时的参赛人数?

Python 如何获得平均每小时的参赛人数?,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下数据框df,我想计算每天平均每小时的参赛人数,按跑道分组 year month day hour runway 2017 12 30 10 32L 2017 12 30 11 32L 2017 12 30 11 32L 2017 12 30 11 32L 2017 12 30 11 30R 2018 12 3

我有以下数据框
df
,我想计算每天平均每小时的参赛人数,按跑道分组

year   month   day   hour    runway
2017   12      30    10      32L
2017   12      30    11      32L
2017   12      30    11      32L
2017   12      30    11      32L
2017   12      30    11      30R
2018   12      31    10      32L
2018   12      31    10      32L
2018   12      31    11      32L
2018   12      31    11      32L
预期结果如下:

hour   avg. count per hour
10     1.5    
11     3
如果我按
小时
分组,并按
大小
分组,我会得到每小时的条目总数。但是我怎样才能得到平均每小时的参赛人数呢

df.groupby("hour").size()
我尝试了类似的方法,但失败了,错误如下:

s = df.groupby(["hour"])["month","day"].nunique()
df_arr = asma_df.groupby(["hour"]).size().reset_index()
df_arr[0]/df_arr["hour"].map(s) 
更新:


所示的重复问题与我的不同。我问的是平均每小时计数,而不是总每小时计数。因此它没有帮助。

我认为需要将
部门的
输出分配到新列
avg
,什么是
系列

s = df.groupby(["hour"])["day"].nunique()
df_arr = df.groupby(["hour"]).size().reset_index(name='avg')
df_arr['avg'] /= df_arr["hour"].map(s)
#alternative
#df_arr = df_arr.assign(avg = df_arr['avg'] / df_arr["hour"].map(s))
print (df_arr)
   hour  avg
0    10  1.5
1    11  3.0
或将
系列
和最后一个creare
数据帧
除以:

平均值的检查值和解决方案

df_arr = df.groupby(["hour"])["day"].agg(['size','nunique'])
df_arr['avg'] = df_arr['size'] / df_arr['nunique']
print (df_arr)
      size  nunique  avg
hour                    
10       3        2  1.5
11       6        2  3.0

请删除指向其他问题的链接。它与我的不同。如果我做了
df_arr=df_arr['avg']/df_arr[“hour”].map
,我会得到没有列名的数据帧。我尝试了
df_arr.columns=[“hour”,“avg”]
,但还是遇到了同样的问题。@ScalaBoy-您得到的是
系列
,而不是
数据帧
。需要
df_-arr['avg']=df_-arr['avg']/df_-arr[“hour”]地图
df_-arr['avg']/=df_-arr[“hour”]地图
df_arr = df.groupby(["hour"])["day"].agg(['size','nunique'])
df_arr['avg'] = df_arr['size'] / df_arr['nunique']
print (df_arr)
      size  nunique  avg
hour                    
10       3        2  1.5
11       6        2  3.0