首页 > 解决方案 > 如何删除满足某些条件的熊猫中的某些行

问题描述

我正在使用熊猫,我的数据集看起来像这样:

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

我真的很感激帮助。我是新来的。我正在为教职员工做一些项目,而我的截止日期已经很近了。:/

标签: pythonpandasdataframe

解决方案


排序 + 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)等。


推荐阅读