Python 熊猫读取\u csv文件导入错误

Python 熊猫读取\u csv文件导入错误,python,csv,encoding,pandas,Python,Csv,Encoding,Pandas,我试图在Pandas中导入csv文件,但它抛出了一个错误。在notepad++中打开时,数据的格式如下,第一行是列名: "End Customer Organization ID,End Customer Organization Name,End Customer Top Parent Organization ID,End Customer Top Parent Organization Name,Reseller Top Parent ID,Reseller Top Parent Name

我试图在Pandas中导入csv文件,但它抛出了一个错误。在notepad++中打开时,数据的格式如下,第一行是列名:

"End Customer Organization ID,End Customer Organization Name,End Customer Top Parent Organization ID,End Customer Top Parent Organization Name,Reseller Top Parent ID,Reseller Top Parent Name,Business,Rev Sum Division,Rev Sum Category,Product Family,Version,Pricing Level,Summary Pricing Level,Detail Pricing Level,MS Sales Amount,MS Sales Licenses,Fiscal Year,Sales Date"
"11027676,Baroda Western Uttar Pradesh Gramin Bankgfhgfnjgfnmjmhgmghmghmghmnghnmghnmhgnmghnghngh,4078446,Bank Of Barodadfhhgfjyjtkyukujkyujkuhykluiluilui;iooi';po'fserwefvegwegf,1809012,""Hcl Infosystems Ltd - Partnerdghftrutyhb frhywer5y5tyu6ui7iukluyj,lgjmfgnhfrgweffw"",Server & CALsdgrgrfgtrhytrnhjdgthjtyjkukmhjmghmbhmgfngdfbndfhtgh,SQL Server & CALdfhtrhtrgbhrghrye5y45y45yu56juhydsgfaefwe,SQL CALdhdfthtrutrjurhjethfdehrerfgwerweqeadfawrqwerwegtrhyjuytjhyj,SQL CALdtrye45y3t434tjkabcjkasdhfhasdjkcbaksmjcbfuigkjasbcjkasbkdfhiwh,2005,Openfkvgjesropiguwe90fujklascnioawfy98eyfuiasdbcvjkxsbhg,Open Lklbjdfoigueroigbjvwioergyuiowerhgosdhvgfoisdhyguiserhguisrh,""Open Stddfm,vdnoghioerivnsdflierohgushdfovhsiodghuiohdbvgsjdhgouiwerho"",125.85,1,FY07,12/28/2006"
"12835756,Uttam Strips Pvt Ltd,12835756,Uttam Strips Pvt Ltd,12565538,Redington C/O Fortis Financial Services Ltd,MBS,Dynamics ERP,Dynamics NAV,Dynamics NAV Business Essentials,Non-specific,Other,MBS SA,MBS New Customer Enhanc. Def,0,0,FY09,9/15/2008"
"12233135,Bhagwan Singh Tondon,12233135,Bhagwan Singh Tondon,2652941,H B S Systems Pvt Ltd,Server & CAL,SQL Server & CAL,SQL CAL,SQL CAL,Non-specific,Open,Open L&SA,Deferred Open L&SA - New,0,0,FY09,9/15/2008"
"11602305,Maya Academy Of Advanced Cinematics,9750934,Maya Entertainment Ltd,336146,Embee Software Pvt Ltd,Server & CAL,Windows Server & CAL,Windows Server HPC,Windows Compute Cluster Server,Non-specific,Open,Open V/MYO - Rec,OLV Perpet L&SA Recur-Def,0,0,FY09,9/25/2008"
"13336009,Remiel Softech Solution Pvt Ltd,13336009,Remiel Softech Solution Pvt Ltd,13335482,Redington C/O Remiel Softech Solutions Pvt Ltd,MBS,Dynamics ERP,Dynamics NAV,Dynamics NAV Business Essentials,Non-specific,Other,MBS SA,MBS New Customer Enhanc. Def,0,0,FY09,12/23/2008"
"7872800,Science Application International Corporation,2839760,GOVERNMENT OF KARNATAKA,10237455,Cubic Computing P.L,Server & CAL,SQL Server & CAL,SQL Server Standard,SQL Server Standard Edition,Non-specific,Open,Open SA/UA,Deferred Open SA - Renewal,0,0,FY09,1/15/2009"
"13096361,Pratham Software Pvt Ltd,13096361,Pratham Software Pvt Ltd,10133086,Krap Computer,Information Worker,Office,Office Standard / Basic,Office Standard,2007,Open,Open L,Open Std,7132.44,28,FY09,9/24/2008"
"12192276,Texmo Precision Castings,12192276,Texmo Precision Castings,4059430,Quadra Systems. - Partner,Server & CAL,Windows Server & CAL,Windows Standard Server,Windows Server Standard,Non-specific,Open,Open L&SA,Deferred Open L&SA - New,0,0,FY09,11/15/2008"
请注意,以csv格式双击时,同一文件将在excel中以逗号分隔的值打开,但每行中没有引号,如记事本++所示。

我使用了UTF-8编码,这会产生以下错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x91 in position 13: invalid start byte
然后首先使用encoding='cp1252',然后尝试使用拉丁文1

df=pd.read_csv(filename,encoding='cp1252') 

or 

df=pd.read_csv(filename,encoding='latin1')
对于这两种编码,它没有给出任何错误,数据被导入,但作为一个单独的列,而不是不同的列

这是否与数据中每行前面的“”标记有关?我有一个类似的csv文件,带有逗号分隔的值,但每行中没有双引号,并且使用cp1252和latin1正确导入。但不适用于UTF-8,即使文件以utf8格式保存在记事本++。但在这种情况下,utf8不能正常工作,其他两个将其作为单列导入

请告知


谢谢

我很确定引号会导致它将其中的所有逗号解释为转义。所以,你需要把它们都脱掉。这样做相对简单,但由于unicode问题,我会发疯,建议您读入,去掉引号,然后将其写入一个文件,与
read\u csv
一起使用(因为这样可以简化编码问题)

以下是如何写入文件并去掉引号,写入新文件,然后使用read_csv读入:

with open(filename) as infile, open(tmpfile, 'wb') as outfile:
    for line in infile:
        outfile.write(line.strip('"'))

result = pd.read_csv(tmpfile, encoding='cp1252')
在完成临时文件的读取后,您可能希望删除该文件


我建议这样做的原因是,当传递到StringIO缓冲区时,您可以避免处理编码/解码,这对于Python和pandas来说都很挑剔。

为什么每一行都用引号括起来?只要去掉这些,导入就可以了。@DominicKexel是的,就是这样。在notepad++中打开文件时,我看到它的每一行都有引号。也许这会阻止编码。所以我的问题是我)是否有一种编码也可以处理引号。ii)如果没有,那么如何删除每行中的引号?Thanks@DominicKexel您好,我希望您能对此提供帮助,因为我已经尝试了pandas的read_csv函数中的几乎所有选项,但它无法解决上面的报价问题,或者如果encoding='latin1'或encoding='cp1252'将其作为单独的列来阅读。请帮忙!