使用 XLRD 从 excel 表中的列中读取 int 值

Posted

技术标签:

【中文标题】使用 XLRD 从 excel 表中的列中读取 int 值【英文标题】:Read int values from a column in excel sheet using XLRD 【发布时间】:2020-08-15 22:31:44 【问题描述】:

我在 Excel 工作簿中有一个以逗号分隔值的单元格。

此单元格可以具有以下模式的值。

0123123, 345

我想使用XLRDpandas.read_excel 将它们提取为整数列表。

我已经尝试使用带有以下 sn-p 的 xlrd。

book = open_workbook(args.path)
dep_cms = book.sheet_by_index(1)
for row_index in range(1, dep_cms.nrows)
    excelList = []
    excelList.extend([x.strip() for x in dep_cms.cell(row_index, 8).value.split(',')])

我什至尝试过熊猫

excel_frame = read_excel(args.path, sheet_name=2, skiprows=1, verbose=True, na_filter=False)
data_need = excel_frame['Dependent CMS IDS'].tolist()
print(data_need)

但得到的列表索引超出范围。

Reading sheet 2
Traceback (most recent call last):
  File "ExcelCellCSVRead.py", line 25, in <module>
    excel_frame = read_excel(args.path, sheet_name=2, skiprows=1, verbose=True, na_filter=False)
  File "C:\Users\Kris\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\excel\_base.py", line 311, in read_excel
    return io.parse(
  File "C:\Users\Kris\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\excel\_base.py", line 868, in parse
    return self._reader.parse(
  File "C:\Users\Kris\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\excel\_base.py", line 441, in parse
    sheet = self.get_sheet_by_index(asheetname)
  File "C:\Users\Kris\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\excel\_xlrd.py", line 46, in get_sheet_by_index
    return self.book.sheet_by_index(index)
  File "C:\Users\Kris\AppData\Local\Programs\Python\Python38-32\lib\site-packages\xlrd\book.py", line 466, in sheet_by_index
    return self._sheet_list[sheetx] or self.get_sheet(sheetx)
IndexError: list index out of range

它不适用于单元格中的单个值(例如,只有 0 或某个值,例如 123)。它正在输出AttributeError: 'float' object has no attribute 'split'

只有当我有逗号分隔值时它才有效,并将它们转换为字符串列表,如['123', '345']。我猜分裂条件是罪魁祸首。

如何使用 XLRD 或 pandas 将这个单元格的值提取到一个整数列表

问候

【问题讨论】:

对于read_excel skiprows 必须是类似列表的。也许这个link 可以提供帮助。 另外,sheet_name=2 表示 third sheet,请确保这是您想要的,或者直接使用工作表名称。 【参考方案1】:

导入时无法将逗号分隔值 (CSV) 与 Excel 进行比较。

您可以使用read_csv,而不是使用read_excel

下面是代码 sn-p 应用read_csv后你的代码会是什么样子

Import Pandas as pd
df = pd.read_csv("your file name.csv")
data_need = df["Column_name"].tolist()

【讨论】:

嗨 @Noob Geek 这不是 csv 表。只是 Excel 工作表中的特定单元格具有逗号分隔值。例如,0123123, 345

以上是关于使用 XLRD 从 excel 表中的列中读取 int 值的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历一张表中的列值并将另一列中的 COUNTIF 值粘贴到另一张表中

如何使用 python 从文件夹中的多个 excel 文件中读取工作表名称包含“我的”的任何工作表?我正在使用 xlrd

您可以从一个表中的列中调用数据以在 SQL 和 Laravel 中的另一个表中使用吗?

xlrd实现从excel文件读取数据

C#读取EXCEL中的信息,并保存到数据库

如何从存储过程的表中的列中获取输出参数