簡體   English   中英

pandas.read_csv將列名移到一個上

[英]pandas.read_csv moves column names over one

我正在使用位於此處的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",

這不是你遇到問題的專欄,而是索引

import pandas as pd

df = pd.read_csv('P00000001-ALL.csv', index_col=False, low_memory=False)

print(df.head(1))

     cmte_id    cand_id       cand_nm           contbr_nm contbr_city  \
0  C00458844  P60006723  Rubio, Marco  HEFFERNAN, MICHAEL         APO   

  contbr_st contbr_zip                         contbr_employer  \
0        AE  090960009  INFORMATION REQUESTED PER BEST EFFORTS   

                        contbr_occupation  contb_receipt_amt contb_receipt_dt  \
0  INFORMATION REQUESTED PER BEST EFFORTS                210        27-JUN-15   

  receipt_desc memo_cd memo_text form_tp  file_num      tran_id election_tp  
0          NaN     NaN       NaN   SA17A   1015697  SA17.796904       P2016  

low_memory=False是因為第6列具有混合數據類型。

問題來自文件中的每一行, 除了第一行以逗號(分隔符)結尾。 如果需要將第一個“列名稱”視為索引列,Pandas認為那里有一個空列。

嘗試

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM