pandas.read_csv将列名移动到一个以上

vktxenjb  于 2023-11-14  发布在  其他
关注(0)|答案(2)|浏览(100)

我使用的是ALL.zip文件,位于here。我的目标是用它创建一个pandas DataFrame。但是,如果我运行
第一个月
列名不匹配。第一列没有名称,然后第二列用第一列标记,最后一列是NaN系列。所以我尝试

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

字符串
我也有同样的感觉所以我跑了

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


它完美地排列了Colname,但是将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",

dsekswqp

dsekswqp1#

你的问题不是列,而是索引

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具有混合数据类型。

0md85ypi

0md85ypi2#

这个问题是因为文件中的每一行除了第一行都以逗号(分隔符)结尾。Pandas认为如果需要将第一个'列名'作为索引列,那么那里有一个空列。
尝试

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

字符串

相关问题