我有一本具有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个工作表数据的数据框。
可能是一个简单的任务,但我花了很长的时间才能达到目标。我真的很感谢您的帮助。
答案 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