如果每个 sheetname 有相同数量的列(第一行),则将 read_excel 和 sheet_name=None 用于 DataFrames 的所有 sheetname - DataFrames 的字典,然后将列解析为列表,最后传递给 DataFrame:
dfs = pd.read_excel("sample.xlsx", sheet_name=None)
cols = [df.columns for i, df in dfs.items()]
print (cols)
[Index(['a', 'e'], dtype='object'), Index(['u', 't'], dtype='object'),
Index(['i', 'p'], dtype='object')]
df = pd.DataFrame(cols)
print (df)
0 1
0 a e
1 u t
2 i p
如果有不同数量的列,一种可能的想法:
dfs = pd.read_excel("files/a.xlsx", sheet_name=None)
print ([df.columns for i, df in dfs.items()])
[Index(['a', 'e'], dtype='object'), Index(['u', 't'], dtype='object'),
Index(['i', 'p', 'd', 'f'], dtype='object')]
cols = [(x, i) for i, df in dfs.items() for x in df.columns]
print (cols)
[('a', 'Sheet1'), ('e', 'Sheet1'), ('u', 'Sheet2'), ('t', 'Sheet2'),
('i', 'Sheet3'), ('p', 'Sheet3'), ('d', 'Sheet3'), ('f', 'Sheet3')]
df = pd.DataFrame(cols)
print (df)
0 1
0 a Sheet1
1 e Sheet1
2 u Sheet2
3 t Sheet2
4 i Sheet3
5 p Sheet3
6 d Sheet3
7 f Sheet3