根据ANY列值从Dataframe删除行

时间:2018-08-14 08:20:15

标签: python pandas

我有一个数据框:

    Plate | MeanV1 | MeanV2 | MeanV3 ...etc
-----------------------------------------------
0   1     |   3.2  |   4.8  |  6.8  |
1   1     |   3.1  |  10000 | 10000 |  
2   2     |   2.8  |   4.6  |  6.1  |
3   2     |   2.9  |   5.1  | 10000 |
4   3     |  10000 |   5.0  |  7.2  |

,并且需要能够快速删除ANY列包含10000的所有行。

我有一个较早的df,它仅在单列中显示错误代码(10000),并且可以使用:

df[df['MeanV1'] < 1000]

但是我设法在多列上执行此操作的唯一方法是:

df[df['MeanV1'] < 1000]
df[df['MeanV2'] < 1000]
df[df['MeanV3'] < 1000]

等。请记住,在一个真实的数据集中,有超过3000列。

有人可以帮我理解原因吗

headers = list(df)

for prop in headers:
    df = df[df[prop] < 1000]

不起作用?

谢谢

1 个答案:

答案 0 :(得分:1)

使用iloc来选择列的范围,此处所有列都没有第一,将所有值与DataFrame.all进行比较:

df =  df[(df.iloc[:, 1:] != 10000).all(axis=1)]
print (df)
   Plate  MeanV1  MeanV2  MeanV3
0      1     3.2     4.8     6.8
2      2     2.8     4.6     6.1