python - 如何删除满足某些条件的熊猫中的某些行
问题描述
我正在使用熊猫,我的数据集看起来像这样:
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
我真的很感激帮助。我是新来的。我正在为教职员工做一些项目,而我的截止日期已经很近了。:/
解决方案
排序 + groupby.head
您可以按降序排序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)
等。
推荐阅读
- java - 为什么在单元测试中使用@MockBean注解时bean没有初始化
- html - CSS 弹出窗口 - Safari 问题
- google-cloud-firestore - 如何使用 Dart/Flutter 获取具有单次计费读取的文档列表?即,没有listDocuments()?
- swift - 为什么 DateFormatter.date 总是返回 nil?
- javascript - React NavLink activeClassName 不起作用
- django - Is it considered good practice using too many factories in pytest?
- android - 如何修复 MediaMuxer 生成的损坏的 Mp4 文件?
- c# - Azure 服务总线客户端是否会自动重试从服务总线返回的暂时性错误?
- microsoft-graph-api - MS Graph API - 外出回复
- javascript - dsaSign 并且不适用于私钥