test= pd.DataFrame({'Year':['2016','2016','2016','2017','2017','2017']
,'Country' : ['NL','GR','AU','NL','GB','BR']
,'Count' : ['100','200','5','1000','2000','3']})
df;
Year Country Count
0 2016 NL 100
1 2016 GR 200
2 2016 AU 5
3 2017 NL 1000
4 2017 GB 2000
5 2017 BR 3
我想根据“列数”和“年份”选择前2个条目。
例如
Year Country Count
0 2016 NL 100
1 2016 GR 200
3 2017 NL 1000
4 2017 GB 2000
因此,我每年都希望看到前2个国家/地区。有想法吗?
答案 0 :(得分:0)
首先需要将列Count
转换为整数,然后转换sort_values
并最后使用GroupBy.tail
或GroupBy.head
:
test['Count'] = test['Count'].astype(int)
df = test.sort_values(['Year','Count']).groupby('Year').tail(2)
print (df)
Year Country Count
0 2016 NL 100
1 2016 GR 200
3 2017 NL 1000
4 2017 GB 2000
如果要在count
列中更改订单:
test['Count'] = test['Count'].astype(int)
df = test.sort_values(['Year','Count'], ascending=[True, False]).groupby('Year').head(2)
print (df)
Year Country Count
1 2016 GR 200
0 2016 NL 100
4 2017 GB 2000
3 2017 NL 1000