2016-11-30 1 views
1

Ich versuche derzeit, ein Programm zu erstellen, das eine CSV-Datei scannt und Einträge in der Datei mithilfe der BING-API durchsucht. Die Ergebnisse werden dann in eine Tabelle eingefügt.TypeError beim Versuch, einen CSV-Eintrag mit Hilfe von Pandas und XLSXwriter in die Kalkulationstabelle einzufügen

Ein Teil dieses Makros beinhaltet auch das Einfügen in die Tabelle, welcher Begriff gesucht wird, also kopiere ich effektiv einen Eintrag aus der CSV in eine Tabelle, was sinnlos klingt, aber eine wichtige Rolle spielt.

Meine CSV sieht wie folgt aus:

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

I Pandas verwenden, um die Daten aus der CSV zu extrahieren, indem es durch sie Zeile für Zeile laufen, mit diesem Code:

für Index, Zeile in df .iterrows():

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

Dann versuche ich und schreibe eine der Variablen auf eine Zelle in der Tabelle mit xlsxwriter:

worksheet.write(row, col, entrynumber) 

jedoch diese einen Typfehler erzeugt, ist die Rückverfolgung unter:

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. 

Keine Ahnung, warum dies geschieht, habe ich versucht, die Variablen in Strings konvertiert werden, aber die Fehlermeldung erscheint immer noch, jemand irgendwelche Ideen?

Jede Hilfe wird sehr geschätzt :) Danke.

+1

Das Argument * row * erwartet bei jeder Iteration einen einzelnen Wert. Im Moment übergibst du eine ganze "Serie", während die Reihe während der Paarung Tupel (Index, Serie) zu einer Serie wird. Daher erhalten Sie diesen Fehler. Stattdessen fühle ich, dass Arg als Index (Zeilennr.) Passender wäre. –

Antwort

1

Hey alle, ich habe eine Lösung gefunden, wenn jemand anders so dumm ist wie ich, den gleichen Fehler zu machen.

Da ich XLSXWRITER verwendete, hatte ich eine Variable namens 'row', die dem Modul mitteilt, wo mit dem Schreiben von Daten in die Tabelle begonnen werden soll. In meinem Dunst Ich habe ganz vergessen, dass ich auch, dass gleichen Namen verwendet hatte, als ich über die CSV-Datei wurde Iterieren PANDA verwenden, den Code mit:

for index,row in df.iterrows(): 

Offensichtlich ist dies eine Art von Fehler verursacht, wie Python gemischt wurde auf zwischen die Zwei.

Jedenfalls ist es unwahrscheinlich, aber hoffentlich kann dies jemandem helfen, der beim Lernen einen ähnlichen Fehler macht!

Verwandte Themen