多级索引数据框:计算级别值

时间:2017-11-08 07:48:12

标签: python-3.x pandas dataframe data-analysis

我有两个索引的多索引数据框,STNAME(州名)和CTYNAME(县名) Two level indexed dataframe

数据框表示每个州的县详细信息。因此,有一些国家(STNAME)和每个州都有一些县(CTYNAME)。

我需要找到拥有最大县数的州,并根据每个郡的县数对各州进行分类。

1 个答案:

答案 0 :(得分:0)

我认为你需要:

df = pd.DataFrame({'STNAME':['AL'] * 3 + ['MI'] * 4 + ['NY'] , 
                   'CTYNAME':list('abcdefgh'),
                   'COL': range(8) }).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
NY     h          7

首先使用get_level_values获取value_counts的第一级值,默认情况下按计数排序:

a = df.index.get_level_values('STNAME').value_counts()
print (a)
MI    4
AL    3
NY    1
Name: STNAME, dtype: int64

#get first value of index
print (a.index[0])
MI

对于变更订单,请使用reindex

df = df.reindex(a.index, level=0)
print (df)
                COL
STNAME CTYNAME     
MI     d          3
       e          4
       f          5
       g          6
AL     a          0
       b          1
       c          2
NY     h          7