假设我有如下数据:
Month User Visits
April 101078350 16
April 101187789 10000
April 101204204 98
April 101220432 659
April 103021861 25
April 103052403 93
April 103235453 25
April 103309704 77
April 103613303 87
April 103641403 735
April 103698304 62
April 103709630 198
April 103880860 94
April 104090303 448
May 104146303 561
May 104170303 143
May 104216403 273
May 104531678 786
May 104548151 811
May 104584503 15000
这里,Month和User形成一个多索引。是否有一种简单的方法可以获取每个月的平均值,因为月份是指数的一部分?截至目前,我重置索引,按月重新分组,并计算平均值。
答案 0 :(得分:1)
试试这个:
In [16]: df.groupby(level='Month').mean()
Out[16]:
Visits
Month
April 901.214286
May 2929.000000
答案 1 :(得分:1)
您可以groupby
使用aggreagting mean
:
print (df.groupby(level='Month')['Visits'].mean().to_frame())
Visits
Month
April 901.214286
May 2929.000000
或mean
:
print (df.mean(level='Month'))
Visits
Month
April 901.214286
May 2929.000000
时间相同(3ms
是小差异):
df = pd.concat([df]*100000)
In [379]: %timeit (df.groupby(level='Month')['Visits'].mean().to_frame())
10 loops, best of 3: 118 ms per loop
In [380]: %timeit (df.mean(level='Month'))
10 loops, best of 3: 115 ms per loop
答案 2 :(得分:0)
答案是肯定的。做点什么
{{1}}