pandas中数据帧中的两级索引:计算每个第一级索引的二级索引数

时间:2017-05-30 08:21:30

标签: python pandas dataframe

我在下面粘贴了一个带有两级索引的数据框(第一级是州名,第二级是县名): the image contains the statename and the counties in it in the second column

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

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我认为您需要groupby并按size聚合:

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

答案 1 :(得分:0)

它将为每个df = pd.DataFrame({'st_name': 'alabama', 'cityname': [['alabama'], ['autuguva','county'],['county']]}) df.groupby('st_name').count() 计算。我试验了小清单

:find