如果我有一个数据帧df,其中“1”到“x”列和“y”行数。如何删除一个或多个列值超出条件语句的任何行,如大于或小于:
我试过这个名为“1”和“2”的2列:
df = df[df[["1", "2"]] < 0.02]
但是这给了我相同数量的行,但是列值中的NaN曾经是值。
答案 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的评论更好的解决方案