本文同步发表于小弟自架网站:微确幸资讯站
本文为网友于ithelp发问之解答:
网友有n个excel档案,每个档案中都有time、X、Y、Z工作表。
网友想要把每个excel档案中「相同名称」的工作表读出来,并整合成同一个dataframe,
然后再来做后续的处理。
import pandas as pdimport ospath = os.getcwd()# List files:files = os.listdir(path)print(files)files_xlsx = [f for f in files if f[-4:] == "xlsx"]files_xls = [f for f in files if f[-3:] == "xls"]files_xls.extend(files_xlsx)for i, element in enumerate(files_xls): print(i, element)print(len(files_xls))print(files_xls)
['.ipynb_checkpoints', '1.xlsx', '2.xlsx', '3.xlsx', 'Untitled.ipynb']
0 1.xlsx
1 2.xlsx
2 3.xlsx
3
['1.xlsx', '2.xlsx', '3.xlsx']
import warningssh_list = ['time', 'X', 'Y', 'Z']for s in sh_list: df = pd.DataFrame() print(f'工作表变数:{s}') for f in files_xls: data = pd.read_excel(f, sheet_name=s) warnings.simplefilter("ignore") #不显示读档验证警告 print(f'档案名称:{f},工作表{s}的原始资料笔数:{len(data)}') df = df.append(data, ignore_index=True) # 将所有档案中相同名称的工作表dataframe合併 print(f'dataframe_{s}的总资料笔数:{len(df)}') exec('{} = df.copy()'.format('df_'+s)) # 将合併好的工作表dataframe存到一个新的名称如df_time
工作表变数:time
档案名称:1.xlsx,工作表time的原始资料笔数:224
档案名称:2.xlsx,工作表time的原始资料笔数:475
档案名称:3.xlsx,工作表time的原始资料笔数:469
dataframe_time的总资料笔数:1168
工作表变数:X
档案名称:1.xlsx,工作表X的原始资料笔数:224
档案名称:2.xlsx,工作表X的原始资料笔数:475
档案名称:3.xlsx,工作表X的原始资料笔数:469
dataframe_X的总资料笔数:1168
工作表变数:Y
档案名称:1.xlsx,工作表Y的原始资料笔数:224
档案名称:2.xlsx,工作表Y的原始资料笔数:475
档案名称:3.xlsx,工作表Y的原始资料笔数:469
dataframe_Y的总资料笔数:1168
工作表变数:Z
档案名称:1.xlsx,工作表Z的原始资料笔数:224
档案名称:2.xlsx,工作表Z的原始资料笔数:475
档案名称:3.xlsx,工作表Z的原始资料笔数:469
dataframe_Z的总资料笔数:1168
print(len(df_time))df_time.head()
1168
print(len(df_X))df_X.ilco[:, :3]head()
1168
print(len(df_Y))df_Y.ilco[:, :3]head()
1168
print(len(df_Z))df_Z.ilco[:, :3]head()
1168