2017-04-18 2 views
1

Ich arbeite mit CSV-Datei mit über Millionen Einträge. Ich versuche, Daten für jeden Kandidaten als separate Spalte zu lesen. Ich konnte Daten für den ersten Kandidaten analysieren, aber wenn ich zum nächsten Kandidaten komme, bekomme ich Fehler ['cand_nm'] nicht im Index.Pandas. pd.read_csv KeyError: nicht im Index Fehler

Hier ist der Link zur Datei: Link to data file

%matplotlib 
import matplotlib.pyplot as plt 
import pandas as pd 
import numpy as np 

Erster Kandidat

reader_bachmann = pd.read_csv('P00000001-ALL.csv', squeeze=True, low_memory=False, nrows=411) 
print(reader_bachmann) 
cand_bachmann = reader_bachmann[["cand_nm"]] 
print(cand_bachmann) 

Zweiter Kandidat

reader_romney = pd.read_csv('P00000001-ALL.csv', skiprows=range(0,411) , na_filter =True, low_memory=False) 
print(reader_romney) 
cand_romney = reader_romney[["cand_nm"]] 
print(cand_romney) 

Fehlermeldung

KeyError: "['cand_nm'] not in index" 
+0

Ist die erste Zeile die Header? Es scheint, dass Ihr 'skiprows = Bereich (0,411)' die Header übersprungen hätte, was dazu führte, dass 'cand_nm' undefiniert zu sein ist. Index – Yeile

+0

Vielen Dank. Es hat das Problem behoben. – pooh098

Antwort

2

Wenn Sie skip_rows so verwenden, verlieren Sie die Kopfzeile. Also Sie Header für reader_romney ist jetzt Zeile Nummer 412. Wenn dies die Art ist, wie Sie die Datei lesen möchten, müssen Sie die Kopfzeile zu einer Liste von Zeichenfolgen speichern und dann diese Liste als die names= Kwarg übergeben. Zum Beispiel

r_bachman = pd.read_csv('P00000001-ALL.csv', squeeze=True, low_memory=False, 
         nrows=411) 
cols = r_bachman.columns 
r_romney = pd.read_csv('P00000001-ALL.csv', skiprows=range(0,411), 
         na_filter =True, low_memory=False, names=cols) 
+0

Danke. Es hat das Problem behoben. – pooh098

Verwandte Themen