从Pandas数据框中的特定过滤列集中删除空列

时间:2019-07-03 06:57:07

标签: python pandas dataframe

我有一个带有多个空列的数据框。我当中有一些国旗栏。我只需要从数据框中删除空的Flag列。我需要一种解决方案来过滤出Flag列并将其从原始数据框中删除。

    df = pd.DataFrame({'Last_Name': ['Smith', 'Tom', 'Brown'],
                     'First_Name': ['', '', ''],
                     'Age': [35, 45, 25],
                     'Flag1':['','',''],
                     'Flag2':['1','2','3'],
                     'Flag3':['','','']})

我的输出必须是:

           Last_Name    First_Name  Age Flag2
       0   Smith                    35  1
       1   Tom                      45  2
       2   Brown                    25  3 ​

2 个答案:

答案 0 :(得分:3)

filterreplaceisnull一起使用,然后删除列:

drop_cols = df.filter(like='Flag').columns[df.filter(like='Flag').replace('',np.nan).isnull().all()]
df = df.drop(drop_cols, axis=1)

print(df)
  Last_Name First_Name  Age Flag2
0     Smith              35     1
1       Tom              45     2
2     Brown              25     3

答案 1 :(得分:1)

这似乎更简单。在列上创建一个布尔条件,然后相应地建立索引。

df = df.loc[:, df.astype(bool).all() | ~df.columns.str.match('Flag')]
df

  Last_Name First_Name  Age Flag2
0     Smith              35     1
1       Tom              45     2
2     Brown              25     3

在哪里

df.astype(bool).all()

Last_Name      True
First_Name    False
Age            True
Flag1         False
Flag2          True
Flag3         False
dtype: bool

测试列中内容的真实性。空字符串本质上是虚假的,我们利用了这一点。