如果所有值都是特定字符串,则删除pandas数据框中的列

时间:2020-06-09 07:44:45

标签: python pandas dataframe

我有以下称为df的数据框。

有时看起来像这样(每个值都是唯一的)

   key   value1 value2 value3
0  key1  value  value  value
1  key2  value  value  value

有时value3的整个列都用破折号填充:'-'

   key   value1 value2 value3
0  key1  value  value  -
1  key2  value  value  -

我想找到一个命令,如果该列中的所有项目都破折号,它将删除列value3。

我尝试使用df['value3'].any(),但返回'-'

做我想要的事情是正确的方法吗?

if df['value3'].any() == '-':
    df = df.drop['value3'] 

还是有更好的方法?

2 个答案:

答案 0 :(得分:2)

使用

>>> df.loc[:, ~df.eq('-').all()]
    key value1 value2
0  key1  value  value
1  key2  value  value

答案 1 :(得分:1)

比较不等于DataFrame.ne,然后在DataFrame.any中得到所有匹配的列,boolean indexing

print (df.loc[:, df.ne('-').any()])
    key value1 value2
0  key1  value  value
1  key2  value  value