使用Python操作Excel无法遍历整行 实现变量映射下划线拼接需求
Excel匹配拼接变量实现方案
你原有代码存在以下几个核心问题:
- 循环语法错误:
range(len(df1))返回的是单个整数,无法同时赋值给row,col两个变量,会直接抛出解包失败错误 - 逻辑错误:没有先建立Word到Variable的映射关系,两层循环暴力比对效率极低,也无法处理多词匹配的场景
- 语法错误:未定义函数就直接使用
return关键字,运行会直接报错
正确实现代码如下:
import pandas as pd import re # 读取两个Excel文件 file1 = 'C:/Users/madhu/Desktop/Excel1.xlsx' file2 = 'C:/Users/madhu/Desktop/Book1.xlsx' df1 = pd.read_excel(file1) df2 = pd.read_excel(file2) # 建立Word到Variable的映射字典 word_var_map = dict(zip(df1['Word'], df1['Variable'])) # 按映射key的长度降序排序,保证长短语优先匹配(比如优先匹配"phone number"而不是单独的"phone") sorted_match_keys = sorted(word_var_map.keys(), key=lambda x: len(x), reverse=True) # 构建正则匹配模式,自动处理特殊字符 match_pattern = re.compile('|'.join(re.escape(key) for key in sorted_match_keys)) # 定义处理函数:匹配所有对应值后用下划线拼接 def generate_var(word_str): matched_items = match_pattern.findall(word_str) return '_'.join(word_var_map[item] for item in matched_items) # 批量处理Excel2的Word列,生成目标结果 df2['Variable Should be'] = df2['Word'].apply(generate_var) # 打印结果验证 print(df2) # 结果保存到新的Excel文件,不需要的话可以注释掉 df2.to_excel('C:/Users/madhu/Desktop/匹配结果.xlsx', index=False)
该代码完全匹配你给出的示例预期:
user identifier→ 匹配到user、identifier输出us_iduser phone number→ 匹配到user、phone number输出us_pnidentifier number→ 匹配到identifier、number输出id_num
内容的提问来源于stack exchange,提问作者user1014725
相关产品推荐
相关产品推荐

