数据帧中空值和空值之和

2024-10-04 11:21:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含空值和空字符串的数据帧

如下(带复制代码)

data = {'vals1':  [None, '100','','200'],
        'vals2': ['100', '100','',''],
         'vals3': ['100', None,'100',None],
        'vals4': ['', '','','']
        }

df = pd.DataFrame (data, columns = ['vals1','vals2','vals3','vals4'])

输出:

    vals1   vals2   vals3   vals4
0   None    100     100 
1   100     100     None    
2                   100 
3   200             None    

您将看到有合法的null值(Python将“None”视为null),但也有空字符串,由空格表示,空格也是数据集的合法特性。 我们可以使用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

我可以使用df.isnull().sum()对空值求和,它给出:

   vals1    1
   vals2    0
   vals3    2
   vals4    0
dtype: int64

但是,我也需要一种解释空值的方法,以便输出类似于:

       Nulls Empty
vals1    1    1
vals2    0    1
vals3    2    1
vals4    0    4
dtype: int64

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


Tags: 数据字符串nonefalsetruedfdatanull
3条回答

我们能做到

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

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

df.eq('').sum()

不是所有的空白值​​是'',但可以包含更多的空格,因此我认为我们可以:

df2 = df.replace(r'^\s*$', '', regex=True)
new_df = df2.isnull().sum().to_frame('Nulls').assign(Empty = df2.eq('').sum())
print(new_df)

       Nulls  Empty
vals1      1      1
vals2      0      2
vals3      2      0
vals4      0      4

相关问题 更多 >