在Python中读取csv时,分隔符不起作用

时间:2017-05-31 07:10:00

标签: python csv pandas

我有3004行没有标题的数据,每行有不同的字段数(例如,行号1,2,3,4分别有16,17,21,12)。当我调用csv时,这是我的代码。

 df = pd.read_csv(file,'rb', delimiter ='\t', engine='python')

这是输出:

$GPRMC,160330.40,A,1341.,N,10020.,E,0.006,,150517,,,A*7D
$GPGGA,160330.40,1341.,N,10020.,E,1,..
$PUBX,00,160330.40,1341.,N,10020.,E,...
$PUBX,03,20,2,-,056,40,,000,5,U,014,39,41,026,...
$PUBX,04,160330.40,150517,144210.39,1949,18,-6...
ÿ$GPRMC,160330.60,A,1341.,N,10020.,E...
$GPGGA,160330.60,1341.,N,10020.,E,1,...

似乎分隔符根本无法将数据逐列分隔。因此,我尝试使用基于($ PUBX,00)字段数的列函数。这是我添加列时的代码:

my_cols = ['MSG type', 'ID MSG', 'UTC','LAT', 'N/S', 'LONG', 'E/W', 'Alt', 'Status','hAcc', 'vAcc','SOG', 'COG', 'VD','HDOP', 'VDOP', 'TDOP', 'Svs', 'reserved', 'DR', 'CS', '<CR><LF>']

df = pd.read_csv(file, 'rb', header = None, na_filter = False, engine = 'python', index_col=False, names=my_cols)

结果如下图所示。该文件变为“MSG类型”中的一列。

the output

成功调用此csv之后的目的是仅使用$ PUBX,00,...和$ PUBX,04,...的一列组合读取行,并将其写入csv。但是,我仍然在努力将文件分成列。请就此事向我提出建议。非常感谢你。

2 个答案:

答案 0 :(得分:0)

IljaEveilä的帽子提示

@Hasanah基于您的代码:

df = pd.read_csv(file,'rb', delimiter ='\t', engine='python')

delimiter='\t'告诉pandas根据制表符将数据分成字段。

当pandas读入csv文件时的默认分隔符是逗号,因此您不需要定义分隔符:

df = pd.read_csv(file,'rb', engine='python')

答案 1 :(得分:0)

pd.read_csv

用于读取CSV(逗号分隔值)文件,因此您无需指定分隔符。

如果要读取TSV(制表符分隔值)文件,可以使用:

pd.read_table(filepath)

默认分隔符是标签