我有一个大的电子表格文件(.xlsx),我正在使用python熊猫处理。碰巧,我需要数据从两个选项卡(表)在那个大文件。其中一个选项卡包含大量数据,而另一个选项卡只有几个方形单元格。
当我在任何工作表上使用pd.read_excel()时,它看起来就像加载了整个文件(而不仅仅是我感兴趣的工作表)。因此,当我使用该方法两次(每个工作表一次)时,我实际上不得不忍受整个工作簿被读取两次(即使我们只使用指定的工作表)。
我如何只加载特定的表与pd.read_excel()?
我有一个大的电子表格文件(.xlsx),我正在使用python熊猫处理。碰巧,我需要数据从两个选项卡(表)在那个大文件。其中一个选项卡包含大量数据,而另一个选项卡只有几个方形单元格。
当我在任何工作表上使用pd.read_excel()时,它看起来就像加载了整个文件(而不仅仅是我感兴趣的工作表)。因此,当我使用该方法两次(每个工作表一次)时,我实际上不得不忍受整个工作簿被读取两次(即使我们只使用指定的工作表)。
我如何只加载特定的表与pd.read_excel()?
当前回答
你也可以指定表名作为参数:
data_file = pd.read_excel('path_to_file.xls', sheet_name="sheet_name")
将只上传表"sheet_name"。
其他回答
尝试pd。ExcelFile:
xls = pd.ExcelFile('path_to_file.xls')
df1 = pd.read_excel(xls, 'Sheet1')
df2 = pd.read_excel(xls, 'Sheet2')
正如@HaPsantran所指出的,整个Excel文件在ExcelFile()调用期间被读入(似乎没有绕过这个方法)。这只是让你不必每次访问新工作表时都读取相同的文件。
请注意,pd.read_excel()的sheet_name参数可以是工作表的名称(如上所述)、指定工作表号的整数(例如0,1等)、工作表名称或索引列表或None。如果提供了一个列表,它将返回一个字典,其中键是表名/索引,值是数据帧。默认是简单地返回第一个表(即,sheet_name=0)。
如果指定None,则返回所有表,作为{sheet_name:dataframe}字典。
如果你有兴趣阅读所有的表格并将它们合并在一起。最好最快的方法
sheet_to_df_map = pd.read_excel('path_to_file.xls', sheet_name=None)
mdf = pd.concat(sheet_to_df_map, axis=0, ignore_index=True)
这将把所有的表转换成一个单独的数据帧m_df
df = pd.read_excel('FileName.xlsx', 'SheetName')
这将从文件FileName.xlsx中读取表SheetName
你也可以使用表的索引:
xls = pd.ExcelFile('path_to_file.xls')
sheet1 = xls.parse(0)
将给出第一个工作表。第二张工作表:
sheet2 = xls.parse(1)
你也可以指定表名作为参数:
data_file = pd.read_excel('path_to_file.xls', sheet_name="sheet_name")
将只上传表"sheet_name"。