我有一个数据框:
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]
不起作用?
谢谢
答案 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