2017-05-30 67 views
0

我使用两级索引(第一级是州名,第二级是县名)粘贴下面的数据帧: the image contains the statename and the counties in it in the second columnpandas中的数据框中的两级索引:计数每个第一级索引的第二级索引的数量

我需要计算每个州的县数。 (在粘贴的图像中,我只有单个状态的信息,但是整个数据帧由多个类似的条目组成,用于状态和相应的县名。) for ex。在上面的图片中,它应该返回5阿拉巴马州(我知道阿拉巴马州内有60个其他县,但我刚刚粘贴了较大数据框的一小部分)。 哪个pandas函数可以用来返回每个州的县计数? 我是熊猫的新手,只是在学习阶段。

感谢您的帮助提前。

+0

您应该发布一个与您的数据框类似的示例DataFrame对象。 –

+0

问题中的超链接显示了回答此问题所需的我的数据框架结构的一部分图像。 – Bhavana

回答

0

我觉得你size需要groupby和汇总:

df1 = df.groupby(level=0).size() 

或者:

df1 = df.groupby('STNAME').size() 

样品:

df = pd.DataFrame({'STNAME':['AL'] * 3 + ['MI'] * 4, 
        'CTYNAME':list('abcdefg'), 
        'COL': range(7) }).set_index(['STNAME','CTYNAME']) 
print (df) 
       COL 
STNAME CTYNAME  
AL  a   0 
     b   1 
     c   2 
MI  d   3 
     e   4 
     f   5 
     g   6 

df1 = df.groupby(level=0).size().reset_index(name='count') 
print (df1) 
    STNAME count 
0  AL  3 
1  MI  4 

df1 = df.groupby('STNAME').size().reset_index(name='count') 
print (df1) 
    STNAME count 
0  AL  3 
1  MI  4 
0

它会给计数每个st_name。我尝试了一个小列表

df = pd.DataFrame({'st_name': 'alabama', 'cityname': [['alabama'], ['autuguva','county'],['county']]}) 

df.groupby('st_name').count() 
+0

更好的是'size',勾选[this](https://stackoverflow.com/documentation/pandas/1822/grouping-data/6874/aggregating-by-size-and-count#t=201705300840165643736) – jezrael