You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选Pandas DataFrame指定列含数值1的行?代码运行失败求解决方案

问题原因

  • 逻辑运算符优先级错误:pandas中按位或|的优先级高于比较运算符==,未给每个判断条件加括号会导致运算顺序出错,无法得到正确的布尔序列。
  • 语法误用:代码中多次出现us_responses(判断条件)的写法,()是调用函数/方法的语法,不能用来包裹DataFrame的判断条件,属于语法错误。
  • 类型不匹配:原始值为float类型,对应取值为1.0,使用字符串"1"做匹配天然无法命中,即使转成integer类型也应该和数字1对比,不需要加引号。

解决代码

写法1:修正原有逻辑

# Dependencies and Setup
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import json
from pprint import pprint
import requests
import time
from scipy import stats
import seaborn as sn
%matplotlib inline
    
# Read csv
us_path = "us_Data.csv"
us_responses = pd.read_csv(us_path)

# 先把需要筛选的列统一转为int类型,空值默认填充为0避免转换报错
health_cols = ["diabetes", "cardiovascular_disorders", "obesity", "respiratory_infections", "respiratory_disorders_exam", "gastrointestinal_disorders", "chronic_kidney_disease", "autoimmune_disease", "chronic_fatigue_syndrome_a"]
us_responses[health_cols] = us_responses[health_cols].fillna(0).astype(int)

# 筛选任意一列等于1的行,每个条件加括号,去掉多余的us_responses()调用
preexisting_us = us_responses[(us_responses["diabetes"] == 1) | 
                              (us_responses["cardiovascular_disorders"] == 1) | 
                              (us_responses["obesity"] == 1) | 
                              (us_responses["respiratory_infections"] == 1) | 
                              (us_responses["respiratory_disorders_exam"] == 1) | 
                              (us_responses["gastrointestinal_disorders"] == 1) | 
                              (us_responses["chronic_kidney_disease"] == 1) | 
                              (us_responses["autoimmune_disease"] == 1) | 
                              (us_responses["chronic_fatigue_syndrome_a"] == 1)]

写法2:更简洁的any()写法(推荐)

不需要逐个写判断条件,后续要增删筛选列只要修改health_cols列表即可:

# 前面读取数据、转类型的代码和上面一致
preexisting_us = us_responses[us_responses[health_cols].eq(1).any(axis=1)]

逻辑说明:eq(1)会把指定列所有等于1的位置标记为True,any(axis=1)会判断每一行是否至少有一个True,也就是任意健康列取值为1。

内容的提问来源于stack exchange,提问作者nladkins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:06:02