2017-04-18 187 views
1

我正在處理超過百萬條目的CSV文件。我試圖將每個候選人的數據作爲單獨的列讀取。我能夠解析第一個候選人的數據,但是當我到達下一個候選人時,我得到的錯誤['cand_nm']不在索引中。熊貓。 pd.read_csv KeyError:不在索引錯誤

下面是該文件的鏈接:Link to data file

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

第一候選

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) 

第二位候選

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) 

錯誤消息

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

第一行標題?看起來你的'skiprows = range(0,411)'會跳過標題,導致'cand_nm'未定義索引 – Yeile

+0

謝謝。它解決了這個問題。 – pooh098

回答

2

當你使用skip_rows這樣你就失去了標題。因此,您的標題爲reader_romney現在是行號412.如果這是您想要讀取該文件的方式,則需要將標題行存儲到字符串列表中,然後將該列表作爲names= kwarg傳遞。例如

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

謝謝。它解決了這個問題。 – pooh098