如何将excel文件转换成Pandas数据框

djp7away  于 2023-01-15  发布在  其他
关注(0)|答案(2)|浏览(161)

我有6个excel文件,每个文件包含1到3个电子表格。我想把它们上传到Pandas数据框架中,然后对它们做一些数据清理。我的问题是,我如何才能把这些excel文件转换成Pandas中的一个数据框架?
我试图打开一个excel文件,有多个工作表到数据框中的Pandas,但不能做到这一点?

xqk2d5yq

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”。在这里我展示了如何分别和一起阅读。

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
643ylb08

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)

相关问题