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