Python Pandas实现按指定年份参数匹配返回对应行的Country与Name列值
按年份匹配提取Excel对应行字段的实现方法
核心逻辑
不需要手动嵌套循环逐行、逐列做值判断,借助Pandas内置的向量化条件筛选能力就能完成匹配,处理效率远高于手写遍历循环:
- 读取目标Excel文件,转换为结构化DataFrame
- 通过布尔索引筛选出
Year列值和入参目标年份完全相等的所有行 - 从筛选结果中提取
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
相关产品推荐
相关产品推荐

