我有以下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      30    10      32L
2018   12      30    10      32L
2018   12      30    11      32L
2018   12      30    11      32L


预期的结果是这样的:

year   runway   avg. count per hour
2017   32L      2
2017   30R      0.5
2018   32L      2
2018   32L      0


我尝试了此方法,但它不计算每小时的平均计数:

result = df.groupby(['year','runway']).count()

最佳答案

这是实现它的一种方法,即

#Take the count of unique hours per year
s = df.groupby(['year'])['hour'].nunique()
# Take the count of the the runway
n = df.groupby(['year','runway']).size().reset_index()
# Divide them
n['avg'] = n[0]/n['year'].map(s)

   year runway  0  avg
0  2017    30R  1  0.5
1  2017    32L  4  2.0
2  2018    32L  4  2.0

10-08 12:50