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

Pandas如何通过列值匹配行、按列名获取DataFrame单元格值

实现方法

你之前的写法运行失败,核心原因是loc的行筛选参数默认匹配行索引标签,你的样例DataFrame行索引是0-3的整数,不存在值为Omar Mullins的行标签,自然无法定位到目标行。
不需要依赖原始行号,按name列的值匹配取对应grade有两种常用方案:

  • 方案1:布尔索引筛选(无需修改原表结构,适配绝大多数场景)
    传入列值匹配的布尔条件筛选目标行,再指定要提取的grade列即可:
    # 返回包含目标值的DataFrame格式结果
    ddf = df.loc[df['name'] == 'Omar Mullins', ['grade']]
    print(ddf)
    
    如果确认name列无重复值,想直接拿到95这个标量,可以追加位置索引取值:
    # 直接返回整数类型的成绩值95
    target_grade = df.loc[df['name'] == 'Omar Mullins', 'grade'].iloc[0]
    print(target_grade)
    
  • 方案2:将name列设置为行索引(适合频繁按姓名查询的场景)
    先把name列转为行索引,之后就可以直接用你之前尝试的loc语法按姓名取数:
    # 生成以姓名为行索引的DataFrame
    df_indexed_by_name = df.set_index('name')
    # 直接按姓名标签取对应grade
    ddf = df_indexed_by_name.loc[['Omar Mullins'], ['grade']]
    print(ddf)
    

提示:如果name列存在重名记录,上述两种方法都会返回所有匹配姓名的grade结果,使用前请根据实际业务场景确认列值唯一性,或提前做去重处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:15:34