天天看點

pandas 第一行_pandas 循環讀取檔案夾下的 excel,并彙總到一張表格

pandas 第一行_pandas 循環讀取檔案夾下的 excel,并彙總到一張表格

-- 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 檔案’)