【问题标题】:Python: Imported csv not being split into proper columnsPython:导入的 csv 未拆分为正确的列
【发布时间】:2017-12-19 22:01:11
【问题描述】:

我正在使用 pandas 将 csv 文件导入 python,但数据框仅在一列中。我将来自The Player Standing Field table at this link (second one) 的逗号分隔格式的数据复制并粘贴到一个 excel 文件中,并将其保存为 csv(最初为 ms-dos,然后根据 AllthingsGo42 的建议保存为普通格式和 utf-8)。但它只返回一个单列数据框。

我尝试过的示例:

dataset=pd.read('MLB2016PlayerStats2.csv')

dataset=pd.read('MLB2016PlayerStats2.csv', delimiter=',')

dataset=pd.read_csv('MLB2016PlayerStats2.csv',encoding='ISO-8859-9', 
delimiter=',')

上面的每一行代码都返回了:

Rk,姓名,年龄,Tm,Lg,G,GS,CG,Inn,Ch,PO,A,E,DP,Fld%,Rtot,Rtot/yr,Rdrs,Rdrs/yr,RF/9, RF/G,位置汇总 1,Fernando Abad\abadfe01,30,TOT,AL,57,0,0,46.2...
2,Jose Abreu\abreujo02,29,CHW,AL,152,152,150,1...
3、A.J. Achter\achteaaj01,27,LAA,AL,27,0,0,37.2,...
4,Dustin Ackley\ackledu01,28,NYY,AL,23,16,10,1...
5,克里斯蒂安·亚当斯\adamecr01,24,COL,NL,69,43,3...

也试过了:

dataset=pd.read_csv('MLB2016PlayerStats2.csv',encoding='ISO-8859-9', 
delimiter=',',quoting=3)

返回:

"Rk                        Name  Age   Tm  Lg    G   GS   CG     Inn    Ch  
\
0  "1      Fernando Abad\abadfe01   30  TOT  AL   57    0    0    46.2     4   

1  "2        Jose Abreu\abreujo02   29  CHW  AL  152  152  150  1355.2  1337   

2  "3       A.J. Achter\achteaj01   27  LAA  AL   27    0    0    37.2     6   

3  "4     Dustin Ackley\ackledu01   28  NYY  AL   23   16   10   140.1    97   

4  "5  Cristhian Adames\adamecr01   24  COL  NL   69   43   38   415.0   212   

   E   DP   Fld%  Rtot  Rtot/yr  Rdrs  Rdrs/yr  RF/9  RF/G  \
0      ...        0    1  1.000   NaN      NaN   NaN      NaN  0.77  0.07   
1      ...       10  131  0.993  -2.0     -2.0  -5.0     -4.0  8.81  8.73   
2      ...        0    0  1.000   NaN      NaN   0.0      0.0  1.43  0.22   
3      ...        0    8  1.000   1.0      9.0   3.0     27.0  6.22  4.22   
4      ...        6   24  0.972  -4.0    -12.0   1.0      3.0  4.47  2.99   

Pos Summary"  
0            P"  
1           1B"  
2            P"  
3     1B-OF-2B"  
4     SS-2B-3B"  

下面是notepad++中数据的样子

"Rk,Name,Age,Tm,Lg,G,GS,CG,Inn,Ch,PO,A,E,DP,Fld%,Rtot,Rtot/yr,Rdrs,Rdrs/yr,RF/9,RF/G,Pos Summary"
"1,Fernando Abad\abadfe01,30,TOT,AL,57,0,0,46.2,4,0,4,0,1,1.000,,,,,0.77,0.07,P"
"2,Jose Abreu\abreujo02,29,CHW,AL,152,152,150,1355.2,1337,1243,84,10,131,.993,-2,-2,-5,-4,8.81,8.73,1B"
"3,A.J. Achter\achteaj01,27,LAA,AL,27,0,0,37.2,6,2,4,0,0,1.000,,,0,0,1.43,0.22,P"
"4,Dustin Ackley\ackledu01,28,NYY,AL,23,16,10,140.1,97,89,8,0,8,1.000,1,9,3,27,6.22,4.22,1B-OF-2B"
"5,Cristhian Adames\adamecr01,24,COL,NL,69,43,38,415.0,212,68,138,6,24,.972,-4,-12,1,3,4.47,2.99,SS-2B-3B"
"6,Austin Adams\adamsau01,29,CLE,AL,19,0,0,18.1,1,0,0,1,0,.000,,,0,0,0.00,0.00,P"

抱歉,我之前的问题让我感到困惑。我希望这次编辑能把事情弄清楚。感谢那些迄今为止回答的人。

【问题讨论】:

  • “它不起作用”是什么意思?您收到错误消息了吗?
  • @user2314737 它会导入,但除非我使用 quoting=3,否则分隔符不会分隔数据。这拆分了数据,但将我描述的内容返回到了第一列和最后一列。
  • 请提供示例代码sn-p、示例数据sn-p和完整的回溯(如果有)。如果您没有得到回溯,请详细说明所需数据格式与您当前获得的数据之间的差异。
  • 来自可能具有不同区域设置的 PC 的 csv?它可能不是 UTF-8,即使它看起来像一个逗号,但它实际上可能是来自不同字符集的其他东西。我看到德国 PC 的 " 会发生这种情况。我会在记事本 ++ 中打开文本文件并仔细检查编码。
  • 请在文本编辑器中打开.csv 并将前几行复制粘贴到您的问题中。

标签: python pandas csv delimiter


【解决方案1】:

我自己快速运行它,我能够得到我所理解的是所需的输出。

我唯一的想法是没有必要为 csv 调用分隔符,因为 csv 是一个逗号分隔的变量文件,但这不重要。我认为您的实际数据文件有问题,我会去确保它被正确保存。我会回显以前的 cmets 并确保 csv 是 UTF-8,而不是 MS-DOS 或 Macintosh(保存在 excel 中时的两个选项)

祝你好运!

【讨论】:

  • 谢谢 AllThingsGo42。我尝试将其保存为普通的 csv 和 UTF-8 并再次导入,但不幸的是仍然得到相同的结果....感谢您的帮助
【解决方案2】:

无需为 csv 调用分隔符。您只需将分隔符从“;”更改为至 ”,”。为此,您可以使用记事本打开 csv 文件并使用替换工具进行更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 2017-07-09
    • 1970-01-01
    • 2017-11-27
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多