需求如下:
实现代码:
未优化代码
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() 函数填充未匹配到的值。
这种优化方式可以减少循环的嵌套层数,提高了替换操作的效率,从而降低了时间复杂度。