在pandas中解析文本文件的问题

时间:2017-05-05 20:48:59

标签: python-3.x csv pandas

我有以下文本文件,我想在python中加载:

                cabin embarked     boat   body  
0                  B5        S        2    NaN   
1             C22 C26        S       11    NaN   
2             C22 C26        S      NaN    NaN   
3             C22 C26        S      NaN  135.0   
4             C22 C26        S      NaN    NaN   
5                 E12        S        3    NaN   
6                  D7        S       10    NaN   
7                 A36        S      NaN    NaN   
8                C101        S        D    NaN   

根据我收到的类似问题的回复,我尝试了以下内容:

df = pd.read_fwf("test.csv", header=0, index_col=0)

它工作正常。 但以下不起作用:

pd.read_csv("test.csv", sep="\s{2,}", header=0, index_col=0, engine="python")

我收到以下错误:

ValueError: Expected 4 fields in line 2, saw 5

鉴于sep =" \ s {2,}"认为字段由2个或更多个空格分隔,

line 2 (0 B5 S 2 NaN),

应该已经解析没有任何问题。另外,我在第2行只看到4个字段(不包括由index_col = 0处理的行索引);这是错误所指的第5个字段?

1 个答案:

答案 0 :(得分:0)

cabin embarked只相隔一个空格,并被解析为单个字符串。

pd.read_csv被给予一定的自由度,并指出索引有一个空的空间。

                cabin embarked     boat   body  
# ^             ^                  ^      ^
# field 1       field 2           field 3 field 4
# this row establishes expectations


0                  B5        S        2    NaN  
^                  ^         ^        ^    ^ 
field 1            field 2   field 3  fd 4 field 5

这就是错误。第1行建立了4个字段的优先级,第2行显示为5。