新手-将49个Excel工作表读入数据框

时间:2019-07-03 20:09:33

标签: python excel database pandas dataframe

我有一本具有49张纸的excel工作簿(所有相同的列,不同的数据)。我想通过从49个工作表中创建一个csv文件来将此数据加载到数据库中。我的计划是读取每个表并将其连接成一个“主”数据框。然后,我将此数据帧写入一个csv文件,该文件可以加载到数据库中(可能是mySQL)。

我已经成功阅读了前三页,如下:

xls = pd.ExcelFile('Pages 1-49.xlsx')
xls.sheet_names
pdf_1 = pd.read_excel(xls, sheet_name='page 1',skiprows=1)
pdf.append(pdf_next)

我再次执行此代码2次(此处未显示),并具有3个名为pdf_1,pdf_2和pdf 3的数据框。

然后我将这三个数据帧连接如下:

voters = pd.concat([pdf_1, pdf_2, pdf_3],ignore_index='false') 

一切都“正常”-我只有一个数据框-但我总共有150个工作表。如何一次一次循环?

我想要一个包含150个工作表数据的数据框。

可能是一个简单的任务,但我花了很长的时间才能达到目标。我真的很感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您需要使用"for loop"。 我可以建议以下内容:

df_list=[]
xls = pd.ExcelFile('Pages 1-49.xlsx')

for x in range(150):
    df = pd.read_excel(xls, sheet_name='page {}'.format(x+1),skiprows=1)
    df_list.append(df)


voters = pd.concat(df_list,ignore_index='false') 

或者,如果xls.sheet_names是列表,则可以像下面那样替换for循环。

df_list=[]
for sheet_name in xls.sheet_names:
    df = pd.read_excel(xls, sheet_name=sheet_name,skiprows=1)
    df_list.append(df)

答案 1 :(得分:3)

您可以尝试:

# this give you a dictionary of dataframe
# {sheet_name: sheet_df}
dfs = pd.read_excel('play.xlsx', sheet_name=None)
pd.concat(dfs, sort=False)

用我的玩具xlsx:

            A    B    C
Sheet1 0  1.0  2.0  3.0
       1  4.0  5.0  6.0
Sheet2 0  1.0  2.0  3.0
       1  4.0  5.0  6.0