【Pandas】pandas DataFrame all
Pandas2.2 DataFrame
Computations descriptive stats
| 方法 | 描述 |
|---|---|
| DataFrame.abs() | 用于返回 DataFrame 中每个元素的绝对值 |
| DataFrame.all([axis, bool_only, skipna]) | 用于判断 DataFrame 中是否所有元素在指定轴上都为 True |
pandas.DataFrame.all()
pandas.DataFrame.all() 方法用于判断 DataFrame 中是否所有元素在指定轴上都为 True。它是进行逻辑“与”操作的聚合函数,常用于检查数据是否满足某些布尔条件。
一、方法签名
DataFrame.all(axis=0, bool_only=None, skipna=True)
参数说明:
| 参数 | 类型 | 描述 |
|---|---|---|
axis | {0/‘index’, 1/‘columns’}, 默认 0 | 指定判断方向:0 表示按列判断(返回每列是否全为 True),1 表示按行判断(返回每行是否全为 True) |
bool_only | bool, 默认 None | 若为 True,仅考虑布尔类型的列;若为 False,则尝试将非布尔列转换为布尔值进行判断(如 0 为 False,非零为 True) |
skipna | bool, 默认 True | 是否跳过 NaN 值。若为 True,NaN 被视为不影响判断;若为 False,含 NaN 的行/列结果为 NaN |
二、返回值
- 返回一个
Series,表示每一行或每一列是否全部为True。 - 若
axis=0,索引为列名;若axis=1,索引为行索引。
三、使用示例及结果
示例1:默认参数(按列判断)
import pandas as pddf = pd.DataFrame({'A': [True, True, True],'B': [True, False, True],'C': [1, 2, 3],'D': [0, 1, 2]
})result = df.all()
print(result)
输出:
A True
B False
C True
D False
dtype: bool
解释:
- 列 A 全为
True→True - 列 B 含有
False→False - 列 C 非零值都被视为
True→True - 列 D 含有
0→False
示例2:按行判断(axis=1)
result = df.all(axis=1)
print(result)
输出:
0 True
1 False
2 True
dtype: bool
解释:
- 第0行:
[True, True, 1, 0]→ 所有值为真?True(注意:0 是 False) - 第1行:
[True, False, 2, 1]→ 包含False→False - 第2行:
[True, True, 3, 2]→ 全部为真 →True
示例3:设置 bool_only=True
result = df.all(bool_only=True)
print(result)
输出:
A True
B False
dtype: bool
解释:
- 只考虑布尔类型列(即列 A 和 B),忽略数值列 C 和 D。
示例4:设置 skipna=False 并包含 NaN
import numpy as npdf_with_nan = pd.DataFrame({'X': [True, np.nan, True],'Y': [False, True, True]
})result = df_with_nan.all(skipna=False)
print(result)
输出:
X NaN
Y False
dtype: object
解释:
- 列 X 含有
NaN,且skipna=False→ 结果为NaN - 列 Y 含有
False→ 整体为False
四、适用场景
| 场景 | 描述 |
|---|---|
| 数据校验 | 检查某列或某行是否全部满足某个布尔条件(如非空、非零等) |
| 特征筛选 | 在机器学习中判断某些布尔特征是否全部为 True |
| 异常检测 | 检查是否存在 False 值,从而发现异常情况 |
五、注意事项
- 非布尔列会被自动转换为布尔值(如 0 → False,非零 → True)
NaN值默认被跳过(不影响判断),可通过skipna=False改变行为bool_only=True时,只作用于布尔类型列,忽略其他类型列
六、总结
| 特性 | 描述 |
|---|---|
| 功能 | 判断 DataFrame 中每个列或行是否所有元素都为 True |
| 适用类型 | 布尔列、数值列(自动转换为布尔) |
| NaN 处理 | 默认跳过,可设为 skipna=False 显示 NaN |
| 是否修改原数据 | 否,返回新 Series |
all() 是一个非常实用的逻辑聚合函数,适用于对 DataFrame 进行整体布尔判断和数据校验。
