jim*_*on 0 python string numpy pandas jupyter-notebook
我有一个包含 NULL 值和空字符串的数据框。
如下(带有repro代码)
data = {'vals1': [None, '100','','200'],
'vals2': ['100', '100','',''],
'vals3': ['100', None,'100',None],
'vals4': ['', '','','']
}
df = pd.DataFrame (data, columns = ['vals1','vals2','vals3','vals4'])
Run Code Online (Sandbox Code Playgroud)
输出:
vals1 vals2 vals3 vals4
0 None 100 100
1 100 100 None
2 100
3 200 None
Run Code Online (Sandbox Code Playgroud)
您会看到有合法的空值(Python 将“None”视为空值),但也有空字符串,用空格表示,这也是数据集的合法特征。我们可以使用以下方法计算空值df.isnull().sum()
这使:
vals1 vals2 vals3 vals4
0 True False False False
1 False False True False
2 False False False False
3 False False True False
Run Code Online (Sandbox Code Playgroud)
我可以使用df.isnull().sum()which对空值求和:
vals1 1
vals2 0
vals3 2
vals4 0
dtype: int64
Run Code Online (Sandbox Code Playgroud)
但是,我也需要一种计算空值的方法,这样输出就会变成:
Nulls Empty
vals1 1 1
vals2 0 1
vals3 2 1
vals4 0 4
dtype: int64
Run Code Online (Sandbox Code Playgroud)
我怎样才能达到我想要的输出?
我们可以做的
df=pd.concat([df.isnull().sum(),df.eq('').sum()],keys=['Nulls','Empty'],axis=1)
Nulls Empty
vals1 1 1
vals2 0 2
vals3 2 0
vals4 0 4
Run Code Online (Sandbox Code Playgroud)