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

Python如何从DataFrame提取键值对 按名称匹配分数避免硬编码

DataFrame示例截图

iloc是纯按行、列的物理位置取值,只要DataFrame发生行排序、插入删除、筛选重置等操作,位置和实际值的对应关系就会错位。要实现按名称匹配对应分数、完全不受行顺序影响,有两种常用实现方案:

方案1:单次查询指定名称分数

通过布尔筛选匹配目标名称所在行,再取对应分数列的值,和行顺序完全无关:

import pandas as pd

name_dict = {
    'Name': ['a','b','c','d'],
    'Score': [90,80,95,20]
}
df = pd.DataFrame(name_dict)

# 提取名称为a的对应分数
target_name = 'a'
a_score = df.loc[df['Name'] == target_name, 'Score'].iloc[0]
print(a_score) # 固定返回90,行顺序变动不会影响结果

方案2:一次性生成名称-分数映射字典(高频查询推荐)

如果需要多次查询不同名称的分数,直接将两列拼接为键值对字典,后续直接按键取值即可,查询效率更高,完全不依赖DataFrame的原有结构:

# 生成 {名称: 对应分数} 的映射字典
score_map = dict(zip(df['Name'], df['Score']))

# 直接按键取值
print(score_map['a']) # 返回90
print(score_map['c']) # 返回95

特殊场景处理:如果Name列存在重复值,上述字典写法会默认保留最后一次出现的重复名称对应的分数。如果需要收集同名对象的所有分数,可以用分组聚合逻辑生成映射:

# 每个名称对应的分数以列表形式存储
score_map_dup = df.groupby('Name')['Score'].agg(list).to_dict()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 00:51:17