You need to enable JavaScript to run this app. Python Pandas实现按指定年份参数匹配返回对应行的Country与Name列值
优惠活动
大模型
产品
解决方案
定价
更多

Python Pandas实现按指定年份参数匹配返回对应行的Country与Name列值

按年份匹配提取Excel对应行字段的实现方法

核心逻辑

不需要手动嵌套循环逐行、逐列做值判断,借助Pandas内置的向量化条件筛选能力就能完成匹配,处理效率远高于手写遍历循环:

  1. 读取目标Excel文件,转换为结构化DataFrame
  2. 通过布尔索引筛选出Year列值和入参目标年份完全相等的所有行
  3. 从筛选结果中提取Country、Name两列的字段值,按需要的格式返回

完整函数代码

首先导入依赖库:

import pandas as pd

def giveDetails(target_year):
    # 替换为你本地的Excel文件实际路径
    df = pd.read_excel("你的数据表.xlsx")
    # 可选:统一Year列的数据类型,避免因为格式不一致(比如年份存为文本)导致匹配失效
    df["Year"] = df["Year"].astype(int)
    # 条件筛选:匹配目标年份,取Country、Name两个字段
    matched_result = df[df["Year"] == target_year][["Country", "Name"]]
    
    # 可根据业务需要选择返回格式:
    # 方案1:返回结构化DataFrame,方便后续做二次统计、导出等操作
    return matched_result
    # 方案2:返回拼接好的文本列表,和示例需求的返回形式匹配
    # return [f"{row.Country} {row.Name}" for row in matched_result.itertuples()]

调用效果对照

  • 调用giveDetails(1992)时,会匹配到所有1992年的记录,对应返回Germany Lisa、Spain Sofia、USA Thomas的字段值
  • 调用giveDetails(1994)时,会匹配返回Sweden Hubert的字段值
  • 调用giveDetails(1995)时,会匹配返回Germany Jossy的字段值

常见踩坑提醒

  • 匹配失效时优先检查Year列的数据类型,比如Excel导出时可能把数字格式的年份存为带空格的字符串,统一转成整数再做匹配就能解决大部分匹配不到的问题
  • 如果没有匹配到对应年份的记录,函数会返回空的结果集,可以根据需要增加自定义的提示逻辑,比如匹配为空时返回"无对应年份的记录"

小提示:如果后续需要扩展匹配规则,比如多条件匹配、模糊匹配,只需要在筛选条件的位置追加逻辑判断即可,不需要改动整体的代码结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 01:06:05