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

如何在pandas DataFrame中根据EMP ID查询对应的Name Emp字段值

问题原因

  • 你写的emp_name= df['EMP ID']==id_no得到的是仅包含True/False的布尔序列,不是筛选后的DataFrame结果,无法直接用来提取姓名字段
  • 带空格的列名Name Emp不能直接以变量形式写在方括号内,必须用引号包裹,否则Python会将其识别为未定义的变量抛出报错
  • 如果你之前用df.query失败,大概率是没有处理带空格的列名、也没有正确引用外部变量导致的

正确实现方式

方式1:基础布尔索引(最常用)

id_no = 2
# 先用布尔序列筛选匹配行,再提取Name EMP列,iloc[0]取第一个匹配结果(EMP ID唯一时可直接用)
emp_name = df[df['EMP ID'] == id_no]['Name EMP'].iloc[0]
print(emp_name)

运行后输出:Paul

方式2:df.query 写法

带空格的列名需要用反引号包裹,引用外部变量要加@`前缀:

id_no = 2
emp_name = df.query("`EMP ID` == @id_no")['Name EMP'].iloc[0]
print(emp_name)

方式3:索引查询(高频查询场景更高效)

如果需要频繁根据EMP ID查询,可提前将EMP ID设为索引,后续查询效率更高:

# 仅需执行一次索引设置
df = df.set_index('EMP ID')
# 后续直接用loc查询
id_no = 2
emp_name = df.loc[id_no, 'Name EMP']
print(emp_name)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:09:01