我正在处理一个数据帧,它看起来像这样:
score name country date id
1 name1 country1 date1 id1
5 name1 country1 date2 id2
6 name1 country1 date3 id3
9 name2 country2 date1 id4
5 name2 country2 date2 id5
5 name2 country2 date2 id5
7 name2 country3 date2 id5
2 name2 country3 date2 id5
1 name2 country3 date3 id6
2 name3 country4 date1 id7
6 name3 country4 date1 id8
7 name3 country4 date1 id9
我想得到按国家分组的每个名字的ID,其中得分是该组名字的前5%。最后应该是这样的:
name country score date id
name1 country1 6 date2 id2
5 date3 id3
name2 country2 9 date2 id2
name2 country3 7 date2 id2
name3 country4 7 date2 id2
最佳答案
IIUC公司,
g = df.groupby('country')
g.apply(lambda r: r[r.score >= r.score.quantile(0.95)])
score name country date id
country
country1 2 6 name1 country1 date3 id3
country2 3 9 name2 country2 date1 id4
country3 6 7 name2 country3 date2 id5
country4 11 7 name3 country4 date1 id9
关于python - Pandas 集团得分最高5%,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51425532/