猿问

熊猫 - 读取文本文件

我有一个文本文件,如下所示:


************************************************************************************************

 English Premier Division - Saturday 25th May 2002

************************************************************************************************



================================================================================================

 2001/2 Assists

================================================================================================


Pos   Player                     Club                       Apps     Asts

-------------------------------------------------------------------------

1st   David Beckham              Man Utd                    29       15     

2nd   Dean Gordon                Middlesbrough              30 (1)   11     

3rd   John Collins               Fulham                     32       11     

4th   Ryan Giggs                 Man Utd                    32       11     

5th   Kieron Dyer                Newcastle                  33       10     

6th   Sean Davis                 Fulham                     23 (1)   10     

7th   Damien Duff                Blackburn                  30 (3)   10     

8th   Alan Smith                 Leeds                      23 (6)   9      

9th   Jesper Grønkjær            Chelsea                    34       9      


我试图把它读成一个大熊猫数据帧,就像这样:


df = pd.read_table('assist1.txt',

                       sep='\s+',

                       skiprows=6,

                       header=0,)

此代码引发异常 - pandas.errors.ParserError: 标记数据时出错。C 错误:预期第 31 行中有 7 个字段,看到 8 个字段。


我想这是因为玩家的名字和姓氏之间的空格(应该是“玩家”列的值)。有没有办法做到这一点?


倚天杖
浏览 91回答 2
2回答

慕村9548890

另一种方法是将分隔符指定为多个空格,并将跳过列为行列表。我试过这个,它给了我你预期的输出。您可以编写简单的脚本来查找要跳过的行以及要考虑的行。df = pd.read_table('assist1.txt', sep='\s\s+', skiprows=[0,1,2,3,4,5,6,7,8,10], header=0,engine='python')

喵喔喔

您使用空格作为分隔符,但这是固定长度分隔的,而不是空格分隔的。你应该谷歌固定长度解析,例如 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_fwf.html。
随时随地看视频慕课网APP

相关分类

Python
我要回答