我有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类型”中的一列。
成功调用此csv之后的目的是仅使用$ PUBX,00,...和$ PUBX,04,...的一列组合读取行,并将其写入csv。但是,我仍然在努力将文件分成列。请就此事向我提出建议。非常感谢你。
答案 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)
默认分隔符是标签