我可以在特定索引上使用聚合函数吗?

时间:2017-01-11 19:20:36

标签: pandas

假设我有如下数据:

  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形成一个多索引。是否有一种简单的方法可以获取每个月的平均值,因为月份是指数的一部分?截至目前,我重置索引,按月重新分组,并计算平均值。

3 个答案:

答案 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}}