我正在处理一个数据帧,它看起来像这样:

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/

10-12 16:20