如果任何列值不符合pandas中的条件,则删除行

时间:2014-12-11 17:33:13

标签: python pandas

如果我有一个数据帧df,其中“1”到“x”列和“y”行数。如何删除一个或多个列值超出条件语句的任何行,如大于或小于:

我试过这个名为“1”和“2”的2列:

df = df[df[["1", "2"]] < 0.02]

但是这给了我相同数量的行,但是列值中的NaN曾经是值。

1 个答案:

答案 0 :(得分:1)

怎么样?

import pandas
import numpy
randn = numpy.random.randn 
>>> df = pandas.DataFrame(randn(4, 4), columns=['A', 'B', 'C', 'D'], index=['a', 'b', 'c', 'd'])
>>> df
      A         B         C         D
a -1.509065 -1.700310 -1.443745  0.659686
b  1.303247  0.466667 -0.320595  0.428322
c -0.126422  0.203114 -1.157571 -0.766103
d -0.611362 -0.653566  0.451102  0.617120
>>> df[~(df < 0.5).all(1)]
      A         B         C         D
a -1.509065 -1.700310 -1.443745  0.659686
b  1.303247  0.466667 -0.320595  0.428322
d -0.611362 -0.653566  0.451102  0.617120

>>> df[~(df > 1.3).any(1)]
      A         B         C         D
a -1.509065 -1.700310 -1.443745  0.659686
c -0.126422  0.203114 -1.157571 -0.766103
d -0.611362 -0.653566  0.451102  0.617120

希望有所帮助

编辑:基于azuric的评论更好的解决方案