我有6个excel文件,每个文件包含1到3个电子表格。我想把它们上传到Pandas数据框架中,然后对它们做一些数据清理。我的问题是,我如何才能把这些excel文件转换成Pandas中的一个数据框架?我试图打开一个excel文件,有多个工作表到数据框中的Pandas,但不能做到这一点?
xqk2d5yq1#
您必须使用pd.read_excel。请在此处查看您问题的答案:Using Pandas to pd.read_excel() for multiple worksheets of the same workbook大家也可以看一下原文来源:pandas.read表格我还有一个excel文件,第一张表有17,000行,第二张表有3,000行,两张表的列是一样的。第一张表的名称是“1”,第二张表的名称是“2”。在这里我展示了如何分别和一起阅读。
pd.read_excel
import pandas as pd df1 = pd.read_excel('file.xlsx',sheet_name = '1') df2 = pd.read_excel('file.xlsx',sheet_name = '2') df3 = pd.read_excel('file.xlsx',sheet_name = ['1','2']) df4 = pd.concat(df3, axis=0, ignore_index=True) print('df1:',len(df1)) print('df2:',len(df2)) print('df3:',len(df3)) print('df4:',len(df4))
输出:
df1: 17000 df2: 3000 df3: 2 df4: 20000
643ylb082#
使用sheet_name=None参数返回一个字典,可以使用字典解析来迭代字典,以创建文件名作为键和 Dataframe 作为值的Map。最后对Map值运行列表解析,并将所有的dfs连接在一起。
from pathlib import Path import pandas as pd def concat_all_sheets_in_all_files(path: str) -> pd.DataFrame: files = list(Path(path).rglob("*.xlsx")) dfs_mapping = {Path(file).stem: pd.concat(pd.read_excel(file, sheet_name=None)) for file in files} return pd.concat([df for _, df in dfs_mapping.items()]).reset_index(drop=True) file_path = "path/to/all/excel/files/" final_df = concat_all_sheets_in_all_files(path=file_path) print(final_df)
2条答案
按热度按时间xqk2d5yq1#
您必须使用
pd.read_excel
。请在此处查看您问题的答案:Using Pandas to pd.read_excel() for multiple worksheets of the same workbook
大家也可以看一下原文来源:
pandas.read表格
我还有一个excel文件,第一张表有17,000行,第二张表有3,000行,两张表的列是一样的。第一张表的名称是“1”,第二张表的名称是“2”。在这里我展示了如何分别和一起阅读。
输出:
643ylb082#
使用sheet_name=None参数返回一个字典,可以使用字典解析来迭代字典,以创建文件名作为键和 Dataframe 作为值的Map。最后对Map值运行列表解析,并将所有的dfs连接在一起。