Python学习笔记: 批次读取excel档案下所有的工作表(同一目录下),彙整成一个dataframe

本文同步发表于小弟自架网站:微确幸资讯站

本文为网友于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

0100nan10nan20nan30nan40nan
print(len(df_X))df_X.ilco[:, :3]head()

1168

0.04102-0.10547-0.17480-0.41943-0.100590.2060510.051760.00586-0.035162-0.70557-0.48193-0.1298830.05127-0.2793-0.3588940.03027-0.59082-0.97949
print(len(df_Y))df_Y.ilco[:, :3]head()

1168

-0.15186-0.25-0.263670-0.235350.286130.490231-0.24512-0.16797-0.0683620.168460.250980.1103530.245610.358890.193364-0.16406-0.15771-0.09717
print(len(df_Z))df_Z.ilco[:, :3]head()

1168

-0.0210.055660.0507800.314450.10303-0.2119110.10693-0.035160.0212-0.06006-0.10205-0.066893-0.14209-0.2915-0.091314-0.23535-0.2041-0.08936

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章