pandas 多指标水平 [英] Pandas Multiindex count on levels

查看:56
本文介绍了 pandas 多指标水平的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

数据:

index = [('A', 'aa', 'aaa'),
         ('A', 'aa', 'aab'),
         ('B', 'bb', 'bbb'),
         ('B', 'bb', 'bbc'),
         ('C', 'cc', 'ccc')
        ]
values = [0.07, 0.04, 0.04, 0.06, 0.07]

s = pd.Series(data=values, index=pd.MultiIndex.from_tuples(index))

s
A  aa  aaa    0.07
       aab    0.04
B  bb  bbb    0.04
       bbc    0.06
C  cc  ccc    0.07

获得前两个级别的平均值很容易:

To get a mean of first two levels is easy:

s.mean(level=[0,1])

结果:

A  aa    0.055
B  bb    0.050
C  cc    0.070

但是要获得前两个级别的计数是不一样的:

But to get a count on first two levels does not work the same:

#s.count(level=[0,1]) # does not work

我可以解决:

s.reset_index().groupby(['level_0', 'level_1']).size()

level_0  level_1
A        aa         2
B        bb         2
C        cc         1

但是必须有一种更干净的方法来获得相同的结果吗?我缺少明显的东西吗?

But there must be a cleaner way to get the same result? Am I missing something obvious?

推荐答案

似乎有错误,您可以使用:

It seems bug, you can use:

print (s.groupby(level=[0,1]).size())
#with exclude NaNs
#print (s.groupby(level=[0,1]).count())
A  aa    2
B  bb    2
C  cc    1
dtype: int64

这篇关于 pandas 多指标水平的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆