Python:对Excel数据进行对比处理

 使用Python工具Pandas对Excel数据进行对比处理。

import openpyxl
import pandas as pd

dev_add_file = '.xls'
dev_add_sheet = ''
dev_add_new_file = 'xls'
dev_add_cmp_sheet = ''

dev_rm_file = '.xls'
dev_rm_sheet = ''
dev_rm_new_file = '.xls'

excel_add = pd.read_excel(dev_add_file, sheet_name=dev_add_sheet, engine="xlrd")
# ascending 默认等于True,按从小到大排列,改为False 按从大到小排。
excel_add.sort_values(by=['部品號碼','SIDE'], inplace=True, ascending=True)
#excel_add.to_excel(dev_add_new_file, dev_add_sheet, index=False)

excel_rm = pd.read_excel(dev_rm_file, sheet_name=dev_rm_sheet, engine="xlrd")
# ascending 默认等于True,按从小到大排列,改为False 按从大到小排。
excel_rm.sort_values(by=['部品號碼','SIDE'], inplace=True, ascending=True)
#excel_rm.to_excel(dev_rm_new_file, dev_rm_sheet, index=False)

#excel_add_cmp = pd.read_excel(dev_add_file, sheet_name=dev_add_cmp_sheet, engine="xlrd")

countor = 2

for i in range(2, excel_add.iloc[:,0].size) :
    number_bigger = 0 # 增加表 部门号码 大于减少表
    number_equal = 0 # 增加表 部门号码 等于减少表
    side_bigger = 0 # 增加表 SIDE 大于减少表
    side_equal = 0  # 增加表 SIDE 等于减少表

    for j in range(countor, excel_rm.iloc[:,0].size) :
        if (excel_add['部品號碼'][i] > excel_rm['部品號碼'][j]) :
            number_bigger = 1
            number_equal = 0
            continue
        elif (excel_add['部品號碼'][i] < excel_rm['部品號碼'][j]) :
            number_bigger = 0
            number_equal = 0
            countor = j + 1
            break
        else :
            number_equal = 1
            if (excel_add['SIDE'][i] > excel_rm['SIDE'][j]) :
                side_bigger = 1
                side_equal = 0
                continue
            elif (excel_add['SIDE'][i] < excel_rm['SIDE'][j]) :
                side_bigger = 0
                side_equal = 0
                countor = j + 1
                break
            else :
                side_equal = 1
                data['部品號碼'].append(excel_rm['部品號碼'][j])
                data['SIDE'].append(excel_rm['SIDE'][j])
                countor = j + 1
                break

df_dict = pd.DataFrame.from_dict(data)
df_dict.to_excel(dev_add_new_file, dev_add_cmp_sheet, index=False)
import openpyxl
import pandas as pd

dev_add_file = '设变增加1.xls'
dev_add_sheet = '设变增加'
dev_add_new_file = '设变增加_New.xls'

dev_cmp_file = '设变对比表.xls'
dev_cmp_sheet = '设变对比'

dev_rm_file = '设变减少1.xls'
dev_rm_sheet = '设变减少'
dev_rm_new_file = '设变减少表_New.xls'

excel_add = pd.read_excel(dev_add_file, sheet_name=dev_add_sheet, engine="xlrd")
# ascending 默认等于True,按从小到大排列,改为False 按从大到小排。
excel_add.sort_values(by=['部品號碼','SIDE'], inplace=True, ascending=True)
excel_add.to_excel(dev_add_new_file, dev_add_sheet, index=False)
excel_add = pd.read_excel(dev_add_new_file, sheet_name=dev_add_sheet, engine="xlrd")

excel_rm = pd.read_excel(dev_rm_file, sheet_name=dev_rm_sheet, engine="xlrd")
# ascending 默认等于True,按从小到大排列,改为False 按从大到小排。
excel_rm.sort_values(by=['部品號碼','SIDE'], inplace=True, ascending=True)
excel_rm.to_excel(dev_rm_new_file, dev_rm_sheet, index=False)
excel_rm = pd.read_excel(dev_rm_new_file, sheet_name=dev_rm_sheet, engine="xlrd")

data = {'部品號碼': [], 'SIDE': []}
countor = 0

for i in range(0, excel_add.iloc[:,0].size - 1) :
    for j in range(countor, excel_rm.iloc[:,0].size - 1) :
        if (excel_add['部品號碼'][i] > excel_rm['部品號碼'][j]) :
            continue
        elif (excel_add['部品號碼'][i] < excel_rm['部品號碼'][j]) :
            break
        else :
            if (excel_add['SIDE'][i] > excel_rm['SIDE'][j]) :
                continue
            elif (excel_add['SIDE'][i] < excel_rm['SIDE'][j]) :
                break
            else :
                data['部品號碼'].append(excel_rm['部品號碼'][j])
                data['SIDE'].append(excel_rm['SIDE'][j])
                break

df_dict = pd.DataFrame.from_dict(data)
df_dict.to_excel(dev_cmp_file, dev_cmp_sheet, index=False)

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AllenSun-1990

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值