pandas 数据帧中空值和空值的总和

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)

我怎样才能达到我想要的输出?

小智 6

您可以执行与空字符串相同的值的总和:

df.eq('').sum()
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 6

我们可以做的

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)