【问题标题】:Sum of null and empty values in pandas dataframe熊猫数据框中空值和空值的总和
【发布时间】:2020-10-18 06:53:29
【问题描述】:

我有一个包含 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'])

输出:

    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

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

【问题讨论】:

    标签: python pandas string numpy jupyter-notebook


    【解决方案1】:

    您可以对等于空字符串的值进行相同的求和:

    df.eq('').sum()
    

    【讨论】:

      【解决方案2】:

      我们可以的

      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
      

      【讨论】:

        【解决方案3】:

        并非所有的空白值都是''但可以包含更多的空格,所以我认为我们可以这样做:

        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
        

        【讨论】:

        • 谢谢。这是一个非常重要的考虑因素,但幸运的是不适用于我的场景。
        猜你喜欢
        • 2021-06-27
        • 1970-01-01
        • 1970-01-01
        • 2020-11-19
        • 2015-10-09
        • 2018-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多