繁体   English   中英

如果所有值都是某个字符串,则删除 pandas dataframe 中的列

[英]Removing a column in a pandas dataframe if all the values are a certain string

我有以下 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'] 

或者,还有更好的方法?

利用

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

通过DataFrame.ne比较不相等,然后在boolean indexing中获取与DataFrame.any匹配的所有列:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM