2017-03-23 13 views
0

と列の数を読んread_csv。パンダは、私は、次の単一の列のCSVファイルを持っている誤っ9月=なし

ただし、既存のコードでsep=Noneが使用されるように、複数の区切り文字を受け入れる必要があります。

上記のCSVを読むとき、pandas.read_csv('path/to/csv', sep=None)ValueError: Expected 2 fields in line 2, saw 1を生成します。明らかに、デリミタを誤って識別していて、2つの列が必要です。

これを回避する方法を提案する人はいますが、複数の区切り文字を引き続き受け入れることができますが、上記のCSVも正しく処理できますか?たとえば、正規表現デリミタを使用します。 sep=';|,'が原因それにcausing pandas to ignore quotations.

+0

try:https://docs.python.org/2/library/csv.html#csv.Snifferあなたはpandas.read_csvに方言を渡すことができます。 'pandas.read_csv( 'path/to/csv'、dialect = dialect)' –

+0

@JamesR 'Sniffer'は、パンダがフードの中で使うものです。上記の例の場合、 'Error:デリミタを決定できませんでした'を返します。 –

答えて

0

許容されないこれは、我々は最終的に見つけることができる最適なソリューションです:Snifferは区切り文字を検出できない場合、それは単一の行のCSVであると設定すること

data = csv_file.decode(chardet.detect(csv_file)['encoding']) 
dialect = csv.Sniffer().sniff(StringIO(data).readline()) 
if dialect.delimiter.isalnum(): 
    dialect.delimiter = ',' 
pd.read_csv(StringIO(data), dialect=dialect) 

が推論デリミタを,に設定すると、それを読み取ることができます。

関連する問題