如何从数据框中删除包含任何行中特定值的列

时间:2018-12-26 20:32:25

标签: python pandas dataframe filtering

在pandas数据框中,我需要找到在任何行中包含零的列,并删除整列。

例如,如果我的数据框如下所示:

   A  B  C  D  E  F  G  H
0  1  0  1  0  1  1  1  1
1  0  1  1  1  1  0  1  1

我需要删除A,B,D和F列。我知道如何删除列,但是以编程方式识别带有零的列使我难以理解。

2 个答案:

答案 0 :(得分:3)

您可以使用.loc对数据帧进行切片并在列上执行布尔索引,检查其中是否包含any 0

df.loc[:,~(df==0).any()]

   C  E  G  H
0  1  1  1  1
1  1  1  1  1

或者等效地,您可以这样做:

df.loc[:,(df!=0).all()]

答案 1 :(得分:0)

尝试一下:

代码:

import pandas as pd

df = pd.DataFrame({'A': [1, 1, 1], 'B': [1, 0, 1]})
for col in df.columns:
    if 0 in df[col].tolist():
        df = df.drop(columns=col)
df