如何一次性定位Pandas DataFrame中多列特定值(False)的出现位置
定位DataFrame多列中所有False的位置
以下是几种高效的一次性查找方法,覆盖不同需求场景:
1. 获取所有False的精确行列坐标
适合需要明确知道每个False所在行索引和列名的场景:
# 生成全量布尔掩码:单元格为True表示原数据是False mask = df == False # 筛选掩码中为True的位置,整理成坐标表格 false_locations = mask.stack()[mask.stack()].reset_index() # 重命名列名方便阅读 false_locations.columns = ["行索引", "列名", "是否为False"] print(false_locations)
示例输出(对应你提供的DataFrame):
| 行索引 | 列名 | 是否为False |
|---|---|---|
| 0 | Unnamed: 0 | True |
| 0 | Incident ID | True |
| 1 | Unnamed: 0 | True |
| 1 | CR Number | True |
| 1 | Victims | True |
| 2 | Latitude | True |
| 3 | CR Number | True |
| 4 | Year | True |
2. 提取所有包含至少一个False的行数据
如果需要直接查看包含False的整行记录:
# 筛选任意一列存在False的行 rows_with_false = df[df.isin([False]).any(axis=1)] print(rows_with_false)
3. 生成全量False标记矩阵(类似你想要的applymap形式)
如果需要和原DataFrame结构一致的矩阵,标记每个单元格是否为False:
# 高效向量化操作(推荐,大数据量下性能远优于applymap) false_mask = df == False # 或用applymap实现(适合自定义判断逻辑时) false_mask = df.applymap(lambda x: x is False) print(false_mask)
内容的提问来源于stack exchange,提问作者Bhawani Rabisankar Sahoo
相关产品推荐
相关产品推荐

