python使用pandas处理excel数据

需求是将一个excel中的数据,根据序号,将标准问题和答案同步修改到另一个文件下的对应序号数据上

源文件

需要修改的目标文件

pip 安装一下pandas、openpyxl、datetime

pip install pandas
pip install openpyxl
pip install datetime

实现思路:循环读取到每个数据组,取到对应数据,存入结果字典,然后根据目标文件的序号去字典中取值,进行数据的替换,最后输出到新文件。

# -*- encoding: utf-8 -*-

import importlib
import sys
import pandas as pd
import datetime



def main():
    # 加载excel文件
    updateExcel = pd.read_excel('E:\\lawexcel\\updateexcel.xlsx', header=0)
    finalExcel = pd.read_excel('E:\\lawexcel\\finalexcel.xlsx', header=0)

    # 创建结果字典
    resultDic = {}

    # 循环取到修改的内容,放入结果字典
    for idx in updateExcel.index:
        xuhao = updateExcel.loc[idx, '序号']
        if str(xuhao) != 'nan':
            ser = updateExcel.loc[idx + 1]
            stdQuestion = ser['标准问题']
            answer = ser['标准答案']
            resultDic[xuhao] = stdQuestion + "-----" + answer

    # 修改开关默认关闭
    updateSwitch = False
    stdQuestion = ''
    answer = ''

    for idx in finalExcel.index:
        xuhao = finalExcel.loc[idx, '序号']

        # 序号不为空 说明是首行
        if str(xuhao) != 'nan':
            # 重置修改开关为关闭
            updateSwitch = False
            stdQuestion = ''

        # 如果修改开关开启则修改剩余行的标准问
        if updateSwitch and len(stdQuestion) != 0:
            finalExcel.loc[idx, '标准问题'] = stdQuestion

        # 序号不为空 说明是首行
        if str(xuhao) != 'nan':
            # 序号在结果字典中存在 则根据序号拿到 标准问  答案
            if str(xuhao) in resultDic.keys():
                stdQuestion = resultDic[xuhao].split('-----')[0]
                answer = resultDic[xuhao].split('-----')[1]
                # 修改首行标准问题
                finalExcel.loc[idx, '标准问题'] = stdQuestion
                # 修改下一行答案
                finalExcel.loc[idx + 1, '标准答案'] = answer
                updateSwitch = True

    # 写出到新的excel  并且不需要索引
    finalExcel.to_excel('E:\\lawexcel\\finalexcel_new_' + str(datetime.datetime.now().timestamp()) + '.xlsx',
                        index=False)


##执行入口
main()

输出时指定一下索引列输出参数False,否则会将索引列输出到excel中

finalExcel.to_excel('E:\\lawexcel\\finalexcel_new_' + str(datetime.datetime.now().timestamp()) + '.xlsx',
                        index=False)

去输出文件夹查看输出的文件

数据格式无误

碎语

上一篇

HashMap、CurrentHashMap、HashTable三者分析

下一篇
评论
发表评论 说点什么
149
0