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

实现图:

posted @ 2023-05-30 17:28  __username  阅读(55)  评论(0编辑  收藏  举报

本文作者:DIVMonster

本文链接:https://www.cnblogs.com/guangzan/p/12886111.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。