如何删除Pandas中满足一定条件的行

2024-05-16 19:35:53 发布

您现在位置: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

我真的很感激你的帮助。我是新来的。我正在为教职员工做一个项目,我的最后期限就快到了


Tags: 数据项目id数量celllondonparisberlin
2条回答

排序+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

相关问题 更多 >