• 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

  • 相关阅读:
    python-用闭包(装饰器)实现计算器的功能
    python 斐波那契数列
    python 递归方法
    python冒泡排序
    一步步学习ASP.NET MVC3 (6)——@helper,@functions
    一步步学习ASP.NET MVC3 (5)——View从Action中获得数据
    一步步学习ASP.NET MVC3 (4)——Razor(2)
    一步步学习ASP.NET MVC3 (3)——Razor(1)
    ASP.NET MVC Spring.NET NHibernate 整合
    ASP.NET MVC NHibernate 整合
  • 原文地址:https://www.cnblogs.com/lncyc/p/15790805.html
Copyright © 2020-2023  润新知