2017-02-22 144 views
1

所以我有這樣的原始文件有20K左右列,類似這樣的性格九月括號:熊貓read_csv如何應對

number|colour|(a|1)|animal 
1|green|x|dog 
2|blue|y|cat 
3|red|z|owl 

當我使用read_csv(「raw.csv」,九月=」 |')這會創建一個帶有額外列的數據框,因爲(a | 1)列會被分割。

我試圖使用quotechar參數,但是這隻能使用一個值。任何幫助將不勝感激

+0

[這](HTTP:/ /stackoverflow.com/questions/35948417/how-to-use-square-brackets-as-a-quote-character-in-pandas-read-csv)可能會有所幫助。 – Cleb

+0

在你的問題中,數據非常特別的東西是'pd.read_csv('raw.csv',sep =「(?<!a)\ |(?!1)」,engine ='python')'。但我認爲你的實際數據可能更復雜。 – Abdou

回答

2

在您給出的示例數據中,額外的分隔符只出現在標題行中。因此,你可以提供使用names關鍵字自己的列名,然後告訴熊貓跳過標題行如下:

import pandas as pd 

df = pd.read_csv('raw.csv', sep='|', skiprows=1, names=["number", "colour", "(a|1)", "animal"]) 
print df 

這將使你:

number colour (a|1) animal 
0  1 green  x dog 
1  2 blue  y cat 
2  3 red  z owl