pandas.read_csv将列名移到一个上

时间:2015-10-01 21:49:28

标签: python csv pandas

我正在使用位于here的ALL.zip文件。我的目标是用它创建一个pandas DataFrame。但是,如果我跑

data=pd.read_csv(foo.csv)

列名称不匹配。第一列没有名称,然后第二列标有第一列,最后一列是NaN系列。所以我试过

colnames=[list of colnames]
data=pd.read_csv(foo.csv, names=colnames, header=False)

给了我完全相同的东西,所以我跑了

data=pd.read_csv(foo.csv, names=colnames)

将colnames完美排列,但是csv指定的列名称(csv文档中的第一行)完全对齐为第一行数据。所以我跑了

data=data[1:]

这就是诀窍。

所以我在没有解决实际问题的情况下找到了解决方法。我查看了read_csv文档并发现它有点压倒性,并且无法找到仅使用pd.read_csv解决此问题的方法。

什么是根本问题(我假设它是用户错误或文件有问题)?有没有办法用read_csv中的一个命令来修复它?

以下是csv文件的前两行

cmte_id,cand_id,cand_nm,contbr_nm,contbr_city,contbr_st,contbr_zip,contbr_employer,contbr_occupation,contb_receipt_amt,contb_receipt_dt,receipt_desc,memo_cd,memo_text,form_tp,file_num,tran_id,election_tp
C00458844,"P60006723","Rubio, Marco","HEFFERNAN, MICHAEL","APO","AE","090960009","INFORMATION REQUESTED PER BEST EFFORTS","INFORMATION REQUESTED PER BEST EFFORTS",210,27-JUN-15,"","","","SA17A","1015697","SA17.796904","P2016",

2 个答案:

答案 0 :(得分:9)

这不是你遇到问题的专栏,而是索引

low_memory=False

{{1}}是因为第6列具有混合数据类型。

答案 1 :(得分:6)

问题来自于文件中的每一行除了第一个以逗号(分隔符)结尾。如果需要将第一个“列名称”视为索引列,Pandas认为那里有一个空列。

尝试

data= pd.read_csv('P00000001-AL.csv',index_col=False)