繁体   English   中英

如何删除满足某些条件的pandas中的某些行

[英]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

我非常感谢你的帮助。 我是新手。 我正在为教师工作一些项目,我的截止日期非常接近。 :/

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

运用

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM