我有以下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