我有 excel 檔案,每個檔案都有 3 張表和所有相同的列標題。
我想合并所有,以便獲得一個組合資料框。此資料框應在最終資料框旁邊列出作業表名稱、行號和 xls 檔案名。
我試過了
import pandas as pd
dfe = pd.concat(pd.read_excel('abc1.xls', sheet_name=None), ignore_index=True)
這合并了其中一個檔案的所有作業表,但沒有在資料旁邊寫入行號或作業表名稱。我該怎么做?
所需的輸出 -
Rownumber Sheetname Filename State Region Brand
1 tig abc1.xls CA S Go
2 con abc2.xls IA A Po
uj5u.com熱心網友回復:
這是如何做到的。我使用了兩個函式。第一個函式讀取單個 Excel 檔案中的所有作業表,并添加作業表名稱。第二個函式獲取所有的 excel 檔案,并使用第一個函式讀取所有檔案中的所有作業表。
from pandas import pd
def read_sheets(filename):
result = []
sheets = pd.read_excel(filename, sheet_name=None)
for name, sheet in sheets.items():
sheet['Sheetname'] = name
sheet['Row'] = sheet.index
result.append(sheet)
return pd.concat(result, ignore_index=True)
def read_files(filenames):
result = []
for filename in filenames:
file = read_sheets(filename)
file['Filename'] = filename
result.append(file)
return pd.concat(result, ignore_index=True)
您可以通過提供要讀取的檔案串列來呼叫它:
files = ['multisheet.xls', 'multisheet2.xls']
read_files(files)
對于我嘗試過的示例,它會生成如下資料框:
A B A B Sheetname Row Filename
0 1 10 11 Sheet1 0 multisheet.xls
1 2 11 13 Sheet1 1 multisheet.xls
2 3 12 15 Sheet1 2 multisheet.xls
3 4 13 17 Sheet1 3 multisheet.xls
4 3 10 13 Sheet2 0 multisheet.xls
5 3 11 14 Sheet2 1 multisheet.xls
6 3 12 15 Sheet2 2 multisheet.xls
7 3 13 16 Sheet2 3 multisheet.xls
8 1 10 11 Sheet1 0 multisheet2.xls
9 2 11 13 Sheet1 1 multisheet2.xls
10 3 12 15 Sheet1 2 multisheet2.xls
11 4 13 17 Sheet1 3 multisheet2.xls
12 4 10 13 Sheet2 0 multisheet2.xls
13 3 11 14 Sheet2 1 multisheet2.xls
14 3 12 15 Sheet2 2 multisheet2.xls
15 3 13 16 Sheet2 3 multisheet2.xls
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/444931.html
