【发布时间】:2018-04-20 19:36:57
【问题描述】:
我有两个索引的多索引数据框,STNAME(州名)和 CTYNAME(县名)
数据框代表每个州的县详细信息。因此,有一些州 (STNAME),每个州都有一些县 (CTYNAME)。
我需要找到其中县数最多的州,并根据每个州的县数对州进行排序。
【问题讨论】:
标签: python-3.x pandas dataframe data-analysis
我有两个索引的多索引数据框,STNAME(州名)和 CTYNAME(县名)
数据框代表每个州的县详细信息。因此,有一些州 (STNAME),每个州都有一些县 (CTYNAME)。
我需要找到其中县数最多的州,并根据每个州的县数对州进行排序。
【问题讨论】:
标签: python-3.x pandas dataframe data-analysis
我认为你需要:
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
【讨论】: