Python 如何删除熊猫中满足一定条件的某些行
我使用的是熊猫,数据集如下所示:Python 如何删除熊猫中满足一定条件的某些行,python,pandas,dataframe,Python,Pandas,Dataframe,我使用的是熊猫,数据集如下所示: ID-cell TOWNS NumberOfCrimes 1 Paris 444 1 Berlin 333 1 London 111 2 Paris 222 2 London 555 2 Berlin 3 3 Paris
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
. . .
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
这是一个非常大的数据集。我需要为每个城市保留5行,其中犯罪率最高,其余的要删除
因此,我的输出应该如下所示:
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
. . .
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
我真的很感谢你的帮助。我是新来的。我正在为教员们做一个项目,我的截止日期很快就要到了 sort+groupby.head
您可以按NumberOfCrimes
降序排序,然后使用groupby
+head
。下面是一个示例,您的数据提取了各个城镇中犯罪率最高的单个数字
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)
,等等
df.sort_values('NumberOfCrimes').drop_duplicates('ID-cell',keep='last')
Out[404]:
ID-cell TOWNS NumberOfCrimes
0 1 Paris 444
4 2 London 555
5 3 Paris 999
我喜欢这个解决方案,因为它更适合只保留最上面的一个。非常感谢2.:)我能接受两个正确答案吗?@Neven,当然,没问题。注:如果你只需要最上面的一个,温的解决方案会更好。这个更具可扩展性。您的解决方案更好地满足了我的需要,但他的解决方案也很好。:)