在pandas中,当且仅当一个Series不包含任何元素,才被认为是“空”的,而Series内元素全为NaN或None也会被认为非空。
一、Series不包含任何元素
1、使用empty
属性来判断
empty
属性会返回一个布尔值,如果Series为空,它返回True
,否则返回False;
import pandas as pd
# 创建一个空的Series
s1 = pd.Series()
print(s1.empty) # 输出: True
# 创建一个非空的Series
s2 = pd.Series([1, 2, 3, 4, 5])
print(s2.empty) # 输出: False
2、判断其长度是否为0
if len(s1) == 0:
print("Series为空")
else:
print("Series不为空")
二、Series内元素全为NaN或None
Series对象是DataFrame的一列,判断是否全为空
1、使用all()
方法结合isnull()
或isna()
方法
isnull()
或isna()
会返回一个布尔Series,表示每个元素是否为空(NaN或None),而all()
会检查Series中的所有元素是否都为True。如果列中的所有元素都是空的,all()
将返回True
。
import pandas as pd
# 创建一个包含空值的DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [None, None, None],
'C': [pd.NA, pd.NA, pd.NA] # pandas 1.0.0及更高版本中的缺失值表示
})
# 检查列B是否全为空
print(df['B'].isnull().all()) # 输出: True
# 检查列C是否全为空
print(df['C'].isna().all()) # 输出: True
# 使用empty属性检查列B
print(df['B'].empty) # 输出: False
# 使用empty属性检查整个DataFrame(这将检查是否有任何列或行)
print(df.empty) # 输出: False
2、使用any()方法结合
notnull()或notna()
方法
notnull()
和notna()
方法会返回一个布尔Series,其中非空元素为True,空元素为False。然后,any()
方法会检查Series中是否有至少一个True值。
import pandas as pd
# 创建一个包含空值和非空值的DataFrame
df = pd.DataFrame({
'A': [1, 2, 3],
'B': [None, 2, None],
'C': [pd.NA, pd.NA, 4] # pandas 1.0.0及更高版本中的缺失值表示
})
# 检查列B是否不全为空
print(df['B'].notnull().any()) # 输出: True
# 检查列C是否不全为空
print(df['C'].notna().any()) # 输出: True
# 检查列A是否不全为空(实际上这一列全都不为空)
print(df['A'].notnull().any()) # 输出: True
# 检查列D(不存在的列)是否不全为空
print(df['D'].notnull().any()) # 输出: False,因为列D不存在