execel pandas 减少复制黏贴的代码行 自动匹配单号

Posted 走python的路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了execel pandas 减少复制黏贴的代码行 自动匹配单号相关的知识,希望对你有一定的参考价值。

每天工作的任务之一,就是上传单号到客户网站,完成订单的最后一步。

客户网站支持批量上传单号,这里批量上传要按照客户网站规定的模板去做。

模板里头包括【 订单号,商品编码,承运商,物流单号,发货时间,备注】这些列

这些信息分散在两个表格里头,客户网站导出的订单表 里头包括有 订单号,商品编码。 我司网站下单系统 导出的表格 里头有 订单号,ERP编码,承运商,物流单号,发货时间。

需要将两个表按照 订单号 和 商品号 做一个 连接。

用Excel 来做得话,用Vlookup做匹配就可以了,但是有一个很恶心的bug就是,公司的计算机性能呢,非常差,Excel公式拉下去的时候 经常出现一些莫名其妙的问题。公式拉倒一半,公式变文本了,公式拉出来,计算一半 就扔在那里了。坑了不是一次两次了。

现在尝试用pandas来做,希望可以减少半硬件半人为因素导致的bug。代码如下:

import pandas as pd 
import time

# 汇总工作簿中的表 我司 下单系统 导出的表 数量超过6000以后 会自动分配到新的sheet页,所以导出后 需要先做一个汇总
f = pd.ExcelFile(r\'C:\\Users\\Administrator\\Desktop\\订单数据 (2).xlsx\')
data = pd.DataFrame()
for i in f.sheet_names:
    d = pd.read_excel(r\'C:\\Users\\Administrator\\Desktop\\订单数据 (2).xlsx\', sheet_name=i,dtype=str)
    data = pd.concat([data, d])

# 提取工作簿中所需信息
df = data[[\'外部编码\',\'创建时间\',\'单据类型\',\'ERP编码\',\'订单状态\',\'承运商\', \'快递单号\',\'发货时间\']]

# 筛选 单据类型不为备货订单,订单状态不为已取消的数据行
df = df.loc[df[\'单据类型\'] != \'备货订单\']
df = df.loc[df[\'订单状态\'] != \'已取消\']

# 匹配ERP编码 --- 合同号
df_erp = pd.read_excel(r\'产品-下单细节-4.15.xlsx\',sheet_name=\'erp汇总\',dtype=str)
df1 = df.merge(df_erp[[\'ERP编码\',\'序号\']],how=\'left\',on=\'ERP编码\')

# 重命名列
df1.rename(columns = {\'序号\':\'合同号\'}, inplace = True)

# 增加一列 做匹配
df1[\'匹配号\'] = df1[\'外部编码\']+df1[\'合同号\']
print(df1.shape)

# 匹配单号
df_order = pd.read_excel(r\'线上订单汇总20210619 144253.xlsx\',dtype =str)

# 增加一列 做匹配
df_order[\'匹配号\'] = df_order[\'订单编号\']+df_order[\'合同序号\']

# 订单表 匹配 我司下单系统单号
df_dh = df_order.merge(df1,how = \'left\',on=\'匹配号\',suffixes=(\'\', \'_y\'))

# 导出带单号的订单表
time_now = time.strftime("%Y%m%d",time.localtime())
df_dh.to_excel(r\'单号 %s.xlsx\' %time_now,index=False)

还是减轻了很多复制黏贴的工作的:

1. 在汇总excel 工作簿中的工作表 这个步骤里头,就可以省下好多次复制黏贴的工作

2. 代码的好处就是,写一次代码,后面一键调用,交给计算机自运算即可,比人为手动操作的好处在于,人会犯错,计算机不会。

3. 当然也还是需要有一个好的计算机,计算机性能不行的话,数据量大的时候,内存扛不住,程序也运行不起来。

 

当然最好的办法 是打通客户网站 和我司的下单系统呢,但是现实中总是有这样那样的原因,让技术无用武之地。所以现在呢,还是手动操作,两边导进去,导出来。

以上是关于execel pandas 减少复制黏贴的代码行 自动匹配单号的主要内容,如果未能解决你的问题,请参考以下文章

CMD命令行窗口 复制黏贴

xshell无法在vim中复制黏贴

ueditor编辑支持word内容和截图的复制黏贴

Notepad++怎么复制多行黏贴到对应位置

Notepad++怎么复制多行黏贴到对应位置

关于Python pandas模块输出每行中间省略号问题