我正在努力研究一个数据框,它列出了大量具有多个过滤级别的数据,如果这有意义的话.所以我的数据现在按字母顺序按州名排序.第二个过滤级别适用于每个县的人口数据.我用过的过滤是df.sort_values().我现在需要提取每个州最高的三个人口县数,我不知道如何追求这个.
所以我的数据看起来像这样(我在这里省略了行索引):
State County Population
Alabama a 100
Alabama b 50
Alabama c 40
Alabama d 5
Alabama e 1
...
Wyoming a.51 180
Wyoming b.51 150
Wyoming c.51 56
Wyoming d.51 5
Run Code Online (Sandbox Code Playgroud)
现在我想从我的数据框架中获得每个州最高人口的县.我没有和熊猫一起工作,我最初的猜测是做一个.这样的事情(显然是错误的):
list_l = []
for i in df['State'].unique(): #Get a series with every unique state listed once
list_l.append(df[(df['State'] == i])).nlargest(3)
return list_l
Run Code Online (Sandbox Code Playgroud)
即使在打字时我知道它并不完全有意义,但我不确定如何更好地解释它.希望有人能提供帮助.
干杯
s = df.groupby('State')['Population'].nlargest(3)
print (s)
State
Alabama 0 100
1 50
2 40
Wyoming 5 180
6 150
7 56
Name: Population, dtype: int64
Run Code Online (Sandbox Code Playgroud)
然后get_level_values从第二级并选择ix:
print (s.index.get_level_values(1))
Int64Index([0, 1, 2, 5, 6, 7], dtype='int64')
print (df.ix[s.index.get_level_values(1)])
State County Population
0 Alabama a 100
1 Alabama b 50
2 Alabama c 40
5 Wyoming a.51 180
6 Wyoming b.51 150
7 Wyoming c.51 56
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |