在Python中删除小于某个值的行

45

我觉得这个问题一定被别人回答过了,但是我在stackoverflow上找不到答案!

我有一个名为result的数据框,它看起来像这样,并且我想删除所有小于等于10的值。

>>> result
                       Name              Value      Date
189                   Sall                19.0  11/14/15
191                     Sam               10.0  11/14/15
192                 Richard               21.0  11/14/15
193                  Ingrid                4.0  11/14/15 

这个命令起作用并移除所有数值为10的值:

df2 = result[result['Value'] != 10]

但是当我尝试添加<=限定符时,我收到了错误消息SyntaxError: invalid syntax

df3 = result[result['Value'] ! <= 10]  

我觉得可能有一个非常简单的解决方案。

4个回答

65

不要这样做

df3 = result[result['Value'] ! <= 10]  

使用

df3 = result[~(result['Value'] <= 10)]  

它将会运作。或者简单地使用

df3 = result[result['Value'] > 10]  

14

Python不使用!来取反,而是使用not查看这个回答
在这个特定的例子中,!=是一个由两个字符组成的字符串,表示不等于。它不是==的取反。

选项1
除非你有NaN,否则这应该可行。

result[result['Value'] > 10]

选项2
使用一元运算符~来取反一个布尔型序列

result[~(result['Value'] <= 10)]

9

我有另一个建议,可以帮助解决问题。

df3 = result.drop(result[result['Value'] < 10].index)

0

还有{{link1:df.query()}}:

result.query('Value > 10')

                       Name              Value      Date
189                   Sall                19.0  11/14/15
191                     Sam               10.0  11/14/15
192                 Richard               21.0  11/14/15

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接