Python使用pandas读取excel数据并对数据进行替换操作

背景:客户财务部需要货品带完整科目信息的数据,但是在Netsuite系统中,货品仅显示末级科目名称,无法直接导出客户所需样式。

从Netsuite中导出的数据格式。把“成本账户”/“资产账户”/“收入账户”三列转换为下图的带科目的形式

 客户实际需要的数据格式

解决方案:

1.使用excel的IFS公式多条件判断,写好条件后填充即可,公式如下:

=IFS(G2="零部件c","6401.01.05 主营业务成本 : 进货成本 : 零部件c",G2="石英表c","6401.01.02 主营业务成本 : 进货成本 : 石英表c",G2="表带C","6401.01.08 主营业务成本 : 进货成本 : 表带C",
G2="品牌表C","6401.01.10 主营业务成本 : 进货成本 : 品牌表C",G2="表盒C","6401.01.06 主营业务成本 : 进货成本 : 表盒C",G2="机械表C","6401.01.03 主营业务成本 : 进货成本 : 机械表C")

方法比较实用,复杂度不高。

2.尝试使用python的pandas读取excel后再对数据进行操作,以下代码为简版:

import pandas as pd
from pandas import DataFrame

path = r'C:\Users\Shawn\Desktop\mydemo\货品科目.xlsx'

#读取excel数据
data = pd.read_excel(path, sheet_name='Sheet1', dtype=object)
#科目列,替换末级科目名称为科目+科目名称
data['成本账户'][data['成本账户'] == '零部件c'] = '6401.01.05 主营业务成本 : 进货成本 : 零部件c'
data['资产账户'][data['资产账户'] == '零部件z'] = '1405.05.01 库存商品 : 零部件 : 零部件z'
data['收入账户'][data['收入账户'] == '零部件L'] = '6001.03 主营业务收入 : 零部件L'
print(data)

#输出数据为excel
DataFrame(data).to_excel(r'C:\Users\Shawn\Desktop\mydemo\subject_demo.xlsx', sheet_name='Sheet1', index=False, header=True)

 参考资料:https://blog.csdn.net/qq_34377830/article/details/81872568

原文地址:https://www.cnblogs.com/lncyc/p/15790805.html