如果所有值都等于字符串值,则删除列

Lea*_*wly 3 python dataframe pandas

假设我有一个像这样的数据框df

Date      Time Black Carbon Carbon monoxide  PM10                    Particulate matter
0  19/10/2015  01:00:00      No data         No data                 No data   
1  19/10/2015  02:00:00      No data         No data                 No data   
2  19/10/2015  03:00:00      10              No data                 No data   
3  19/10/2015  04:00:00      No data         11 .                    No data   
4  19/10/2015  05:00:00      No data         No data                 No data 
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式删除所有 na 列:

tmp_df= df.dropna(axis=1,how='all')
Run Code Online (Sandbox Code Playgroud)

但是,我希望删除一列,条件是每行都包含一个字符串,No data

在这种情况下,我们将删除该Particulate matter

Ted*_*rou 5

您希望并非所有列都相等No data

df.loc[:, ~(df.astype(str) == 'No data').all()]
Run Code Online (Sandbox Code Playgroud)

输出

                  Date Time Black Carbon Carbon monoxide     PM10
0 19/10/2015  01:00:00                           No data  No data
1 19/10/2015  02:00:00                           No data  No data
2 19/10/2015  03:00:00                                10  No data
3 19/10/2015  04:00:00                           No data     11 .
4 19/10/2015  05:00:00                           No data  No data
Run Code Online (Sandbox Code Playgroud)