我有一个这样的数据框:
import pandas as pd
data = {
'c1': ['Test1','Test2','NULL','Test3',' ','Test4','Test4','Test1',"Test3"],
'c2': [' ','Test1',' ','NULL',' ','NULL','NULL','NULL','NULL'],
'c3': [0,0,0,0,0,1,5,0,0],
'c4': ['NULL', 'Test2', 'Test1','Test1', 'Test2', 'Test2','Test1','Test1','Test2']
}
df = pd.DataFrame(data)
df
数据框如下所示:
c1 c2 c3 c4
0 Test1 0 NULL
1 Test2 Test1 0 Test2
2 NULL 0 Test1
3 Test3 NULL 0 Test1
4 0 Test2
5 Test4 NULL 1 Test2
6 Test4 NULL 5 Test1
7 Test1 NULL 0 Test1
8 Test3 NULL 0 Test2
我想删除所有具有超过 60% 的“空”值的列。 “空”在我的例子中意味着这些值例如:’ ‘、’NULL’ 或 0。有字符串(c1、c2、c4)和整数(c3)。
结果应该是一个只有 c1 和 c4 列的数据框。
c1 c4
0 Test1 NULL
1 Test2 Test2
2 NULL Test1
3 Test3 Test1
4 Test2
5 Test4 Test2
6 Test4 Test1
7 Test1 Test1
8 Test3 Test2
我不知道如何处理这个问题。我唯一想到的就是像
df.loc[:, (df != 0).any(axis=0)]
删除所有值为 0、’NULL’ 等的所有列。
原文由 Krypt 发布,翻译遵循 CC BY-SA 4.0 许可协议
Use
DataFrame.isin
for check all formats and then getmean
for treshold and filter byboolean indexing
withloc
: