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

使用pandas loc多条件过滤DataFrame触发KeyError 'Sector'问题求助

报错根因

KeyError: 'Sector' 出现的核心原因是你导入的DataFrame实际列名中不存在Sector字段:你使用了自定义列名编写筛选逻辑,但没有实际修改数据集的列名,经典adult census收入数据集的默认列名和你使用的Sector、Married、Job等自定义命名完全不匹配。

解决步骤

  1. 第一步先确认数据集实际列名,运行以下代码即可打印所有列名:
print(df.columns.tolist())

经典adult数据集的默认字符串类列名依次为workclass、education、marital-status、occupation、relationship、race、sex、native-country、income,可对应你筛选条件的字段含义。
另外该数据集所有字符串值默认带前后空格,需要统一清洗后再做匹配,避免列名正确的情况下依然筛选不到结果。

  1. 可选解决方案二选一即可:

方案1:直接用原始列名编写筛选逻辑

import pandas as pd
df = pd.read_csv("adult_census_data.csv")

# 批量清洗所有字符串列的前后空格
str_cols = df.select_dtypes(include='object').columns
df[str_cols] = df[str_cols].apply(lambda x: x.str.strip())

# 按原始列名写筛选条件
result = df.loc[
    (df['workclass'] == 'State-gov') &
    (df['education'] == 'Bachelors') &
    (df['marital-status'] == 'Never-married') &
    (df['occupation'] == 'Adm-clerical') &
    (df['relationship'] == 'Not-in-family') &
    (df['race'] == 'White') &
    (df['sex'] == 'Male') &
    (df['native-country'] == 'United-States') &
    (df['income'] == '<=50K')
]
print(result)

方案2:先修改列名为你自定义的名称再筛选

import pandas as pd
df = pd.read_csv("adult_census_data.csv")

# 按你使用的自定义命名修改列名,注意列表顺序要和数据集实际列顺序完全对应
df.columns = ['年龄', 'Sector', 'fnlwgt', 'Education', '教育年限', 'Married', 'Job', 'Family', 'Race', 'Gender', '资本收益', '资本损失', '周工作时长', 'Location', 'Income']

# 批量清洗字符串空格
str_cols = df.select_dtypes(include='object').columns
df[str_cols] = df[str_cols].apply(lambda x: x.str.strip())

# 你原有筛选代码可直接运行
result = df.loc[(df['Sector']=='State-gov') & (df['Education']=='Bachelors') & (df['Married']=='Never-married') & (df['Job']=='Adm-clerical') & (df['Family']=='Not-in-family') & (df['Race']=='White') & (df['Gender']=='Male') & (df['Location']=='United-States') & (df['Income']=='<=50k'), :]
print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:36:02