要找出pandas.DataFrame中有空值的行,可以使用以下步骤:
- 使用
.isnull()
函数来检查数据中的空值。例如,我们有一个名为df的DataFrame:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, None], 'B': [5, None, 7], 'C': [9, 10, 11]})
print(df)
以下是输出:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN 7.0 11
我们使用.isnull()
函数来检查每个元素是否为空:
null_mask = df.isnull()
print(null_mask)
以下是输出:
A B C
0 False False False
1 False True False
2 True False False
这个输出生成了一个新的DataFrame,其中True表示如果列中的值为空时则为该表中的空值。现在我们已经找到所有为空值的元素了。
- 使用
.any()
函数查找包含空值的行。使用了axis参数,设为1,这将提供对行的迭代:
row_has_null = null_mask.any(axis=1)
print(row_has_null)
以下是输出:
0 False
1 True
2 True
dtype: bool
这将生成一个布尔Series,其中显然包含任何空值的行返回True。
- 现在我们可以使用此布尔Series进行索引,以检索包含空值的行:
rows_with_null = df[row_has_null]
print(rows_with_null)
以下是输出:
A B C
1 2.0 NaN 10
2 NaN 7.0 11
这将生成一个包含所有包含空值的行的DataFrame。
示例:
import pandas as pd
import numpy as np
data = {"name": ["Alice", "Bob", "Charlie", "David", "Eli"],
"age": [25, 33, 40, None, 29],
"gender": ["Female", None, "Male", "Male", "Male"],
"height": [1.62, np.nan, 1.75, 1.80, 1.79]}
df = pd.DataFrame(data)
print(df)
输出:
name age gender height
0 Alice 25.0 Female 1.62
1 Bob 33.0 None NaN
2 Charlie 40.0 Male 1.75
3 David NaN Male 1.80
4 Eli 29.0 Male 1.79
我们使用上述三个步骤可以找到包含空值的行:
# 第一步:使用 `.isnull()` 函数检查数据中的空值
null_mask = df.isnull()
print(null_mask)
# 第二步:使用 `.any()` 函数查找包含空值的行
row_has_null = null_mask.any(axis=1)
print(row_has_null)
# 第三步:使用此布尔Series进行索引,以检索包含空值的行
rows_with_null = df[row_has_null]
print(rows_with_null)
输出:
name age gender height
0 False False False False
1 False False True True
2 False False False False
3 False True False False
4 False False False False
0 False
1 True
2 False
3 True
4 False
dtype: bool
name age gender height
1 Bob 33.0 None NaN
3 David NaN Male 1.80
另一个示例:
import pandas as pd
import numpy as np
data = {"name": ["Alice", "Bob", "Charlie", "David", "Eli"],
"age": [25, 33, 40, None, 29],
"gender": ["Female", None, "Male", "Male", "Male"],
"height": [1.62, np.nan, 1.75, 1.80, 1.79],
"nationality": ["USA","China",None,"UK","India"]}
df = pd.DataFrame(data)
print(df)
输出:
name age gender height nationality
0 Alice 25.0 Female 1.62 USA
1 Bob 33.0 None NaN China
2 Charlie 40.0 Male 1.75 None
3 David NaN Male 1.80 UK
4 Eli 29.0 Male 1.79 India
现在假设我们想找到包含空值的行,但只想检查age和gender列中的空值,我们可以这样做:
# 第一步:使用 `.isnull()` 函数检查数据中的空值
null_mask = df[['age', 'gender']].isnull()
print(null_mask)
# 第二步:使用 `.any()` 函数查找包含空值的行
row_has_null = null_mask.any(axis=1)
print(row_has_null)
# 第三步:使用此布尔Series进行索引,以检索包含空值的行
rows_with_null = df[row_has_null]
print(rows_with_null)
这里我们指定使用age和gender列,然后执行相同的步骤,并使用此新创建的DataFrame执行第二步。输出为:
age gender
0 False False
1 False True
2 False False
3 True False
4 False False
0 False
1 True
2 False
3 True
4 False
dtype: bool
name age gender height nationality
1 Bob 33.0 None NaN China
3 David NaN Male 1.8 UK
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python pandas.DataFrame 找出有空值的行 - Python技术站