将每个工作表读入一个新的数据框
Posted
技术标签:
【中文标题】将每个工作表读入一个新的数据框【英文标题】:Reading each worksheet into a new dataframe 【发布时间】:2021-01-13 15:25:04 【问题描述】:我在一个 Excel 文件中有 50 多个工作表。 我的主要目标是将不同的列导入到不同的数据框中。 我可以导入文件并读取工作表的所有名称。
import pandas as pd
df = pd.read_excel('Fileoffiles.xls')
df.sheet_names # will give me names of all my sheets
想法是将表格读入df1, df2....., df50
我不希望它在数据帧字典中,而只是在单个数据帧中。
【问题讨论】:
您可以将所有 df 存储在 dict 或列表中,然后访问它。有 50 个单独的变量有什么意义? 这个链接有很多答案可以帮助你:reading-multiple-tabs-from-excel-in-different-dataframes 【参考方案1】:就像 Mayank 提到的那样,如果您希望为每个数据帧命名,那么数据帧字典可能效果最好。
import pandas as pd
xl = pd.ExcelFile('Book1.xlsx')
sheets = xl.sheet_names
dfs =
df_names = range(len(sheets))
df_names = ['df'+str(i) for i in df_names]
for sheet,name in zip(sheets,df_names):
dfs[name] = xl.parse(sheet)
dfs
结果:
'df0': col_1 col_2 col_3 col_4 col_5
0 12 18 24 30 36
1 23 24 25 26 27
2 34 30 26 22 18
3 45 36 27 18 9
4 56 42 28 14 0
5 67 48 29 10 -9
6 78 54 30 6 -18
7 89 60 31 2 -27
8 100 66 32 -2 -36
9 111 72 33 -6 -45
10 122 78 34 -10 -54
11 133 84 35 -14 -63
12 144 90 36 -18 -72
13 155 96 37 -22 -81
14 166 102 38 -26 -90
15 177 108 39 -30 -99
16 188 114 40 -34 -108
17 199 120 41 -38 -117,
'df1': col_1 col_2 col_3 col_4 col_5
0 1.000000 15.000000 29.0 43.000000 57.000000
1 5.000000 20.000000 35.0 50.000000 65.000000
2 19.000000 27.000000 35.0 43.000000 51.000000
3 26.333333 32.666667 39.0 45.333333 51.666667
4 35.333333 38.666667 42.0 45.333333 48.666667
5 44.333333 44.666667 45.0 45.333333 45.666667
6 53.333333 50.666667 48.0 45.333333 42.666667
7 62.333333 56.666667 51.0 45.333333 39.666667
8 71.333333 62.666667 54.0 45.333333 36.666667
9 80.333333 68.666667 57.0 45.333333 33.666667
10 89.333333 74.666667 60.0 45.333333 30.666667
11 98.333333 80.666667 63.0 45.333333 27.666667
12 107.333333 86.666667 66.0 45.333333 24.666667
13 116.333333 92.666667 69.0 45.333333 21.666667
14 125.333333 98.666667 72.0 45.333333 18.666667
15 134.333333 104.666667 75.0 45.333333 15.666667
16 143.333333 110.666667 78.0 45.333333 12.666667
17 152.333333 116.666667 81.0 45.333333 9.666667
18 161.333333 122.666667 84.0 45.333333 6.666667
数据框列表稍微简单一些
dfs = []
for sheet in sheets:
dfs.append(xl.parse(sheet))
reference
【讨论】:
【参考方案2】:您可以尝试使用“eval”将第 i 个工作表分配给第 i 个数据帧。代码类似于:
xls = pd.ExcelFile('Fileoffiles.xls')
for i in range(len(xls.sheet_names)):
eval('df' + str(i) '= pd.read_excel("Fileoffiles.xls", sheetname="' + xls.sheet_names[i] +'")')
【讨论】:
【参考方案3】:另一个很好的例子,受访者直截了当地告诉调查官,他们错误地询问程序解决问题的能力,而不是简单地回答它,如果他们可以的话,或者只是不回答,因为你已经告诉了OP,他不想要他特别要求的东西......
OP 声明:
我不希望它在数据帧字典中,而只是在单个数据帧中。
【讨论】:
这不是答案以上是关于将每个工作表读入一个新的数据框的主要内容,如果未能解决你的问题,请参考以下文章
将列表框中选定的 Excel 工作表保存为新的工作簿/Excel 文件