Чтение значений int из столбца в таблице Excel с помощью XLRD - PullRequest
0 голосов
/ 01 мая 2020

У меня есть ячейка в книге Excel с разделенными запятыми значениями.

CSV values of column

Эта ячейка может иметь значения со следующим шаблоном.

0 или 123 или 123, 345.

Я хочу извлечь их как список целых чисел, используя XLRD или pandas.read_excel.

Я попытался использовать 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(',')])

Я даже пытался pandas

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 в список целых чисел ?

Привет

1 Ответ

0 голосов
/ 01 мая 2020

Значение с разделением запятыми (CSV) не может быть сравнено, чтобы превзойти во время импорта.

Вместо использования read_excel вы можете использовать read_csv.

ниже приведен фрагмент кода, как ваш код будет выглядеть после применения read_csv

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