Python:如何检查数据框一整列的内容是否为空?

问题描述

我要检查数据帧的整列是否为空!所以说我有

data1 = [12,34,'',678,896]
data2 = ['','']

df = pd.DataFrame(list(zip(data1,data2)),columns = ['Data1','Data2'])
print(df)

   Data1 Data2
0     12
1     34
2    
3    678
4    896

“ Data1”列包含数据,而“ Data2”列为空。我尝试了函数print(df['Data2'].empty),但返回的错误信息为我,但我不明白为什么。那么我该如何验证呢?

谢谢

解决方法

如果有空格, 可能不是全部'',所以最好在这里使用regex,然后我们可以使用Series.isna()Series.all()

df['Data2'].replace(r'^\s*$',np.nan,regex=True).isna().all()
,

您可以先将Series转换为''(Blank),然后再转换np.nan,以检查dropna()是否为空:

In [2530]: import numpy as np
In [2531]: df.Data2 = df.Data2.replace('',np.nan)

In [2533]: df.Data2.dropna().empty
Out[2533]: True
,

空格也是一个字符,因此,如果要编写此字符,则始终为false

data2 = [None,None,None]

df = pd.DataFrame(list(zip(data1,data2)),columns = ['Data1','Data2'])
print(df)

当您检查以下内容时:

print(df['Data2'].empty)

返回True

,

有时候,您需要检查多个列是否为空,如果要查看,则要知道哪些列为空(而不是一次检查一列)。

您可以通过以下方式实现:

  1. ''代替空白值np.nan
  2. 检查数据框具有空值.isna()的地方
  3. 然后通过.all()检查是否有任何列完全用空值填充。

样本数据

data1 = [12,34,'',678,896]
data2 = ['','']
data3 = ['','']
data4 = [10,11,6,'']

df = pd.DataFrame(list(zip(data1,data2,data3,data4)),'Data2','Data3','Data4'])

print(df)
  Data1 Data2 Data3 Data4
0    12                10
1    34                  
2                      11
3   678                 6
4   896                  

方法

out = df.replace('',np.nan).isna().all()

print(out)
Data1    False
Data2     True
Data3     True
Data4    False
dtype: bool

在结果out中,我们看到有True值对应于完全为空的列,而False值对应的列是完全为空。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...