基于pandas中的条件删除行

2024-06-24 12:09:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的数据框

In [62]: df
Out[62]:
            coverage   name  reports  year
Cochice           45  Jason        4  2012
Pima             214  Molly       24  2012
Santa Cruz       212   Tina       31  2013
Maricopa          72   Jake        2  2014
Yuma              85    Amy        3  2014

基本上我可以按如下方式筛选行

df[df["coverage"] > 30

我可以删除一行,如下所示

df.drop(['Cochice', 'Pima'])

但是我想根据一个条件删除一定数量的行,我该怎么做呢?


Tags: 数据nameindfcoveragesantaoutyear
1条回答
网友
1楼 · 发布于 2024-06-24 12:09:24

最好是^{},但需要反转条件-使所有值等于或高于72

print (df[df["coverage"] >= 72])
            coverage   name  reports  year
Pima             214  Molly       24  2012
Santa Cruz       212   Tina       31  2013
Maricopa          72   Jake        2  2014
Yuma              85    Amy        3  2014

它与^{}函数相同:

print (df[df["coverage"].ge(72)])
            coverage   name  reports  year
Pima             214  Molly       24  2012
Santa Cruz       212   Tina       31  2013
Maricopa          72   Jake        2  2014
Yuma              85    Amy        3  2014

另一种可能的解决方案是通过~反转掩模:

print (df["coverage"] < 72)
Cochice        True
Pima          False
Santa Cruz    False
Maricopa      False
Yuma          False
Name: coverage, dtype: bool

print (~(df["coverage"] < 72))
Cochice       False
Pima           True
Santa Cruz     True
Maricopa       True
Yuma           True
Name: coverage, dtype: bool


print (df[~(df["coverage"] < 72)])
            coverage   name  reports  year
Pima             214  Molly       24  2012
Santa Cruz       212   Tina       31  2013
Maricopa          72   Jake        2  2014
Yuma              85    Amy        3  2014

相关问题 更多 >