【问题标题】:How to understand read_excel in Pandas如何理解 Pandas 中的 read_excel
【发布时间】:2023-01-19 19:52:35
【问题描述】:

我正在尝试从网络导入一些公共数据,但无法理解该错误。

我的代码:

import pandas as pd
df2022  = pd.read_excel("https://ofslivefs.blob.core.windows.net/files/NSS%20data%202022/September/NSS2022_summary_data.xlsx")

它返回这个:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
/var/folders/v_/yq26pm194xj5ckqy8p_njwc00000gn/T/ipykernel_89117/2424267382.py in <module>
----> 1 df2022  = pd.read_excel("https://ofslivefs.blob.core.windows.net/files/NSS%20data%202022/September/NSS2022_summary_data.xlsx")

~/opt/anaconda3/lib/python3.9/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
    209                 else:
    210                     kwargs[new_arg_name] = new_arg_value
--> 211             return func(*args, **kwargs)
    212 
    213         return cast(F, wrapper)

~/opt/anaconda3/lib/python3.9/site-packages/pandas/util/_decorators.py in wrapper(*args, **kwargs)
    329                     stacklevel=find_stack_level(),
    330                 )
--> 331             return func(*args, **kwargs)
    332 
    333         # error: "Callable[[VarArg(Any), KwArg(Any)], Any]" has no

~/opt/anaconda3/lib/python3.9/site-packages/pandas/io/excel/_base.py in read_excel(io, sheet_name, header, names, index_col, usecols, squeeze, dtype, engine, converters, true_values, false_values, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, parse_dates, date_parser, thousands, decimal, comment, skipfooter, convert_float, mangle_dupe_cols, storage_options)
    480     if not isinstance(io, ExcelFile):
    481         should_close = True
--> 482         io = ExcelFile(io, storage_options=storage_options, engine=engine)
    483     elif engine and engine != io.engine:
    484         raise ValueError(

~/opt/anaconda3/lib/python3.9/site-packages/pandas/io/excel/_base.py in __init__(self, path_or_buffer, engine, storage_options)
   1693         self.storage_options = storage_options
   1694 
-> 1695         self._reader = self._engines[engine](self._io, storage_options=storage_options)
   1696 
   1697     def __fspath__(self):

~/opt/anaconda3/lib/python3.9/site-packages/pandas/io/excel/_openpyxl.py in __init__(self, filepath_or_buffer, storage_options)
    555         """
    556         import_optional_dependency("openpyxl")
--> 557         super().__init__(filepath_or_buffer, storage_options=storage_options)
    558 
    559     @property

~/opt/anaconda3/lib/python3.9/site-packages/pandas/io/excel/_base.py in __init__(self, filepath_or_buffer, storage_options)
    543             self.handles.handle.seek(0)
    544             try:
--> 545                 self.book = self.load_workbook(self.handles.handle)
    546             except Exception:
    547                 self.close()

~/opt/anaconda3/lib/python3.9/site-packages/pandas/io/excel/_openpyxl.py in load_workbook(self, filepath_or_buffer)
    566         from openpyxl import load_workbook
    567 
--> 568         return load_workbook(
    569             filepath_or_buffer, read_only=True, data_only=True, keep_links=False
    570         )

~/opt/anaconda3/lib/python3.9/site-packages/openpyxl/reader/excel.py in load_workbook(filename, read_only, keep_vba, data_only, keep_links)
    315     reader = ExcelReader(filename, read_only, keep_vba,
    316                         data_only, keep_links)
--> 317     reader.read()
    318     return reader.wb

~/opt/anaconda3/lib/python3.9/site-packages/openpyxl/reader/excel.py in read(self)
    281         apply_stylesheet(self.archive, self.wb)
    282         self.read_worksheets()
--> 283         self.parser.assign_names()
    284         if not self.read_only:
    285             self.archive.close()

~/opt/anaconda3/lib/python3.9/site-packages/openpyxl/reader/workbook.py in assign_names(self)
    100             reserved = defn.is_reserved
    101             if reserved in ("Print_Titles", "Print_Area"):
--> 102                 sheet = self.wb._sheets[defn.localSheetId]
    103                 if reserved == "Print_Titles":
    104                     rows, cols = _unpack_print_titles(defn)

IndexError: list index out of range

在这一点上,我会传统地下载并转换为 CSV,但我想直接从 Web 访问。

工作表(我想我可以访问为 sheetname="Q27 Providers (benchmarked)")不起作用。

【问题讨论】:

    标签: pandas


    【解决方案1】:

    看起来 xlsx 文件已损坏,因此您无法下载它。您是否尝试打开该 xlsx 文件?

    【讨论】:

    • 我做到了。我设法通过下载并在 Excel 中打开它来打开它,然后将表格保存为 CSV。只是对为什么简单的链接下载不起作用感到困惑。很高兴没有很多文件要下载。谢谢你。
    猜你喜欢
    • 2018-11-14
    • 2020-06-02
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 2020-02-16
    • 2020-01-20
    • 2014-07-25
    • 2019-09-14
    相关资源
    最近更新 更多