我正在使用 Pandas ,并且我有如下所示的数据集:
ID-cell TOWNS NumberOfCrimes
1 Paris 444
1 Berlin 333
1 London 111
2 Paris 222
2 London 555
2 Berlin 3
3 Paris 999
4 Berlin 777
4 Paris 5
5 Paris 123
5 Berlin 8
6 Paris 1000
9 Berlin 321
12 Berlin 1
12 Berlin 2
12 Paris 1
. . .
它是一个非常大的数据集。我需要为每个城市只保留 5 行犯罪率最高的行,其余的要删除。
所以我的输出应该是这样的:
ID-cell TOWNS NumberOfCrimes
6 Paris 1000
3 Paris 999
1 Paris 444
2 Paris 222
5 Paris 123
4 Berlin 777
1 Berlin 333
9 Berlin 321
5 Berlin 8
1 London 555
2 London 111
我真的很感谢你的帮助。我是新手。我正在为 Faculty 做一些项目,我的截止日期非常接近。 :/
最佳答案
排序 + groupby.head
您可以按 NumberOfCrimes
降序排序,然后使用 groupby
+ head
。这是一个示例,您的数据按城镇提取了最高的 NumberOfCrimes。
res = df.sort_values('NumberOfCrimes', ascending=False)\
.groupby('TOWNS').head(1)
print(res)
ID-cell TOWNS NumberOfCrimes
5 3 Paris 999
4 2 London 555
1 1 Berlin 333
因此,对于每个城镇的前 2 或 3,您可以使用
head(2)
、 head(3)
等。关于python - 如何删除满足某些条件的 Pandas 中的某些行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51144340/