[英]How to delete certain rows in pandas which satisfies some condition
我正在使用熊猫,我有数据集,看起来像这样:
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
我非常感谢你的帮助。 我是新手。 我正在为教师工作一些项目,我的截止日期非常接近。 :/
您可以按NumberOfCrimes
降序排序,然后使用groupby
+ head
。 这是一个示例,您的数据提取了Town的单个最高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)
等。
运用
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.