办公自动化pandas批量处理数据
需求如下:
实现代码:
未优化代码
import pandas as pd def rep_huan(): # 读取excel文件 df1 = pd.read_excel('data1.xlsx') # 表一 df2 = pd.read_excel('data2.xlsx') # 表二 replace_dict = [] for xm,nc in zip(df1['姓名'], df1['昵称']): dic = { xm: nc } replace_dict.append(dic) # print(replace_dict) names = list(df2['昵称']) print(names) # 进行替换操作 for i, name in enumerate(names): for replace_item in replace_dict: for old_name, new_name in replace_item.items(): if name == old_name: names[i] = new_name break # 输出替换后的结果 print(names) df2['昵称'] = names # 将更新后的数据保存到新的 Excel 文件 df2.to_excel('data3.xlsx', index=False) # 表三 print("替换成功") rep_huan()
优化代码
# @Time : 2023/5/30 # @Author : zhc # @File : demo优化.py import pandas as pd def rep_huan(): # 读取excel文件 df1 = pd.read_excel('data1.xlsx') # 表一 df2 = pd.read_excel('data2.xlsx') # 表二 # 创建字典映射关系的列表 replace_dict = dict(zip(df1['姓名'], df1['昵称'])) # 进行替换操作 df2['昵称'] = df2['昵称'].map(replace_dict).fillna(df2['昵称']) # 将更新后的数据保存到新的 Excel 文件 df2.to_excel('data5.xlsx', index=False) # 表三 print("替换成功") rep_huan()
优化后的代码主要使用了字典的映射关系来进行替换操作,避免了使用嵌套循环的方式。通过将表一中的姓名作为字典的键,昵称作为字典的值,构建了一个映射关系的字典。然后使用 map() 函数将表二中的昵称根据字典进行替换,并使用 fillna() 函数填充未匹配到的值。
这种优化方式可以减少循环的嵌套层数,提高了替换操作的效率,从而降低了时间复杂度。
实现图:
本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/17443860.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步