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

如何在Pandas DataFrame中通过姓名查询对应attempts值?

实现按姓名查询attempts的功能

假设你的现有代码包含占位符,以下是填充后的完整实现,同时加入了异常处理避免无匹配时出错:

完整代码示例

import pandas as pd

# 示例DataFrame(根据你的实际数据替换)
data = {
    'first_name': ['John', 'Emily', 'Michael'],
    'last_name': ['Doe', 'Bell', 'Smith'],
    'attempts': [2, 3, 1]
}
df = pd.DataFrame(data)

def get_attempts(first_name, last_name):
    # 1. 生成布尔掩码,筛选同时匹配名和姓的行
    mask = (df['first_name'] == first_name) & (df['last_name'] == last_name)
    matched_rows = df[mask]
    
    # 2. 处理匹配结果
    if not matched_rows.empty:
        # 提取匹配行的attempts值(假设姓名组合唯一)
        attempts_value = matched_rows['attempts'].iloc[0]
        return f"attempts: {attempts_value}"
    else:
        return "No matching record found"

# 测试调用
print(get_attempts('Emily', 'Bell'))  # 输出: attempts: 3
print(get_attempts('Jane', 'Doe'))    # 输出: No matching record found

关键代码解释

  • 布尔掩码筛选:用&连接两个条件(必须用括号包裹单个条件),精准定位同时匹配名和姓的行
  • 空结果处理:通过matched_rows.empty判断是否存在匹配记录,避免直接取iloc[0]时触发索引越界错误
  • 值提取:使用.iloc[0]提取第一行的attempts值,适用于姓名组合唯一的场景

可选优化

  • 不区分大小写匹配:如果需要忽略大小写差异,把条件改成:
    mask = (df['first_name'].str.lower() == first_name.lower()) & (df['last_name'].str.lower() == last_name.lower())
    
  • 处理重复姓名:如果DataFrame中存在重复的姓名组合,可以根据需求调整,比如返回所有attempts值:
    return f"attempts: {list(matched_rows['attempts'])}"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:30:45