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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM