2017-05-31 89 views
0

我有3004行沒有標題的數據,每行有不同數量的字段(例如行號1,2,3,4有16,17,21, 12)。當我調用csv時,這是我的代碼。分隔符在Python中讀取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 。但是,我仍然在努力如何將文件分成列。請就此事諮詢我。非常感謝你。基於您的代碼

+8

一覽您的實際分隔符是一個逗號,而不是一個標籤。嘗試刪除'delimiter ='\ t''參數。 –

回答

0

帽尖到ILJAEverilä

@Hasanah:

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

delimiter='\t'告訴大熊貓將數據分成基於製表符的字段。

當大熊貓在CSV文件中讀取缺省的分隔符是逗號,所以你不應該需要定義一個分隔符:

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

0
pd.read_csv 

用於讀取CSV(逗號分隔值)文件因此您不需要指定分隔符。

如果你想讀的TSV(製表符分隔值)文件,您可以使用:

pd.read_table(filepath) 

默認的分隔符是標籤

相關問題