Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pandas 熊猫多指数计数_Pandas_Count_Series_Multi Index - Fatal编程技术网

Pandas 熊猫多指数计数

Pandas 熊猫多指数计数,pandas,count,series,multi-index,Pandas,Count,Series,Multi Index,数据: 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

数据:

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
要获得前两个级别的平均值很容易:

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

A  aa    0.055
B  bb    0.050
C  cc    0.070
但要计算前两个级别的数量并不相同:

#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

但必须有一种更干净的方法才能得到同样的结果?我遗漏了一些明显的东西吗?

似乎是bug,您可以使用:

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

从未想过系列会有一个“groupby”方法:)这是很有帮助的,我接受这个答案,认为这是一个更干净的方法,但也许有人能证实,在速度和效率方面,没有“计数方法”可供选择吗?@arvyzu-似乎还没有;(