TypeError при попытке добавить запись CSV в электронную таблицу с помощью Pandas и XLSXwriter

В настоящее время я пытаюсь создать программу, которая сканирует CSV-файл и ищет записи в файле с помощью BING API, а затем результаты вставляются в электронную таблицу.

Часть этого макроса также включает в себя вставку в электронную таблицу искомого термина, поэтому я эффективно копирую запись из CSV в электронную таблицу, что звучит бессмысленно, но играет жизненно важную роль.

Мой CSV выглядит так:

EntryNumber Name    Company TitleNumber
123         john    hsbc    5555
124         chris   ford    6666
125         adam    apple   7777

Я использую Pandas для извлечения данных из CSV, перебирая их по строкам, используя этот код:

для индекса, строки в df.iterrows():

entrynumber = row['EntryNumber']
name = row['Name']
company = row['Company']
title = row['TitleNumber']

Затем я пытаюсь записать одну из переменных в ячейку электронной таблицы с помощью xlsxwriter:

worksheet.write(row, col, entrynumber)

Однако это генерирует ошибку типа, трассировка ниже:

Traceback (most recent call last):
  File "CSVtest.py", line 68, in <module>
    worksheet.write(row, col, entrynumber)
  File "/usr/local/lib/python3.5/site-packages/xlsxwriter/worksheet.py", line 57, in cell_wrapper
    int(args[0])
  File "/usr/local/lib/python3.5/site-packages/pandas/core/series.py", line 92, in wrapper
    "{0}".format(str(converter)))
TypeError: cannot convert the series to <class 'int'>
Exception ignored in: <bound method Workbook.__del__ of <xlsxwriter.workbook.Workbook object at 0x1088118d0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/site-packages/xlsxwriter/workbook.py", line 148, in __del__
Exception: Exception caught in workbook destructor. Explicit close() may be required for workbook.

Не знаю, почему это происходит, я пытался преобразовать переменные в строки, но ошибка все еще появляется, у кого-нибудь есть идеи?

Любая помощь приветствуется :) Спасибо.


person Ruthus99    schedule 30.11.2016    source источник
comment
Аргумент row ожидает одно значение на каждой итерации. Прямо сейчас вы передаете ему весь series, поскольку строка становится серией во время пары кортежей (индекс, серия). Следовательно, вы получаете эту ошибку. Вместо этого я считаю более подходящим указать этот аргумент как index(номера строк).   -  person Nickil Maveli    schedule 30.11.2016


Ответы (1)


Привет всем, я нашел решение, если кто-то еще так же глуп, как и я, чтобы совершить ту же ошибку.

По сути, когда я использовал XLSXWRITER, у меня была переменная с именем «строка», чтобы указать модулю, где начинать запись данных в электронную таблицу. В своем тумане я совершенно забыл, что также использовал это же имя, когда перебирал CSV-файл с помощью PANDAS, используя код:

for index,row in df.iterrows():

Очевидно, это вызвало какую-то ошибку, поскольку Python перепутал их.

В любом случае, это маловероятно, но, надеюсь, это может помочь тому, кто совершает аналогичную ошибку во время обучения!

person Ruthus99    schedule 13.12.2016