-- coding:utf-8 –-
"""
利用 pandas 将多張 excel 表中的指定列資料合并成一張;因為原始的多張資料存在同樣列名的資料,
因為原始多張 excel 是從 csv 檔案轉換股
并且我們隻需要其中的部分列資料,是以進行指定列提取并彙總至 res 檔案中
"""
import os
import pandas as pd
輸入參數為 excel 表格所在目錄
def to_one_excel(dir):
dfs = []
# 周遊檔案目錄,将所有表格表示為 pandas 中的 DataFrame 對象
# for root_dir, sub_dir, files in os.walk(r'' + dir): # 第一個為起始路徑,第二個為起始路徑下的檔案夾,第三個是起始路徑下的檔案。
for root_dir, sub_dir, files in os.walk(dir): # 第一個為起始路徑,第二個為起始路徑下的檔案夾,第三個是起始路徑下的檔案。
for file in files:
if file.endswith(‘xlsx’):
# 構造絕對路徑
file_name = os.path.join(root_dir, file)
# df = pd.read_excel(file_name)
df_1 = list(pd.read_excel(file_name, nrows=1)) # 讀取 excel 第一行資料并放進清單
# excel 第一行資料傳回清單
print(file_name)
print(type(df_1))
print(df_1)
# 根據第一行列名擷取每個檔案中需要列的列索引,傳回索引數值
suo_yin_1 = df_1.index(“Billing Country”)
suo_yin_2 = df_1.index(“Created at”)
suo_yin_3 = df_1.index(“Updated at”)
suo_yin_4 = df_1.index(“Paid Price”)
suo_yin_5 = df_1.index(“Shipment Type Name”)
suo_yin_6 = df_1.index(“Status”)
# 讀取檔案内容 usecols=[1, 3, 4] 讀取第 1,3,4 列
df = pd.read_excel(file_name, usecols=[suo_yin_1, suo_yin_2, suo_yin_3, suo_yin_4, suo_yin_5, suo_yin_6]
, sheet_name=‘data’)
# pf = pd.read_excel('xxx.xls', usecols=[1, 3, 4], sheet_name='data')
# print(pf)
# 追加一列資料,将每個檔案的名字追加進該檔案的資料中,确定每條資料屬于哪個檔案
excel_name = file.replace(".xlsx", "") # 提取每個excel檔案的名稱,去掉.xlsx字尾
df["店鋪"] = excel_name # 建立列名為“店鋪”,列資料為excel檔案名
dfs.append(df) # 将建立店鋪列追加進彙總excel中
# 行合并
df_concated = pd.concat(dfs)
# 構造輸出目錄的絕對路徑
out_path = os.path.join(dir, 'res.xlsx')
# 輸出到excel表格中,并删除pandas預設的index列
df_concated.to_excel(out_path, sheet_name='Sheet1', index=None)
調用并執行函數
to_one_excel(r’C:甥敳獲AdministratorDesktopceshixlsx 檔案’)