2017-06-27 18 views
1

データ:余分なコンマでCSVを読んだり、パンダに引用符を付けないでください。

from io import StringIO 
import pandas as pd 

s = '''ID,Level,QID,Text,ResponseID,responseText,date_key 
375280046,S,D3M,Which is your favorite?,D5M0,option 1,2012-08-08 00:00:00 
375280046,S,D3M,How often? (at home, at work, other),D3M0,Work,2010-03-31 00:00:00 
375280046,M,A78,Do you prefer a, b, or c?,A78C,a,2010-03-31 00:00:00''' 

df = pd.read_csv(StringIO(s)) 

エラーを受信:

pandas.io.common.CParserError: Error tokenizing data. C error: Expected 7 fields in line 3, saw 9 

私はこのエラーを受けてる理由は非常に明白です。データには、How often? (at home, at work, other)およびDo you prefer a, b, or c?などのテキストが含まれています。

このタイプのデータはどのようにしてpandas DataFrameに読み込まれますか?

答えて

2

もちろん、私が質問を書くときに、私はそれを理解しました。それを削除するのではなく、私がこれをやる方法を忘れると、私はそれを私の将来の自己と共有します。

明らかに、パンダのデフォルトのsep=','も正規表現にすることができます。

ソリューションがそうのようread_csvsep=r',(?!\s)'を追加しました:

df = pd.read_csv(StringIO(s), sep=r',(?!\s)') 

(?!\s)一部は、それらの後、次のスペースを持っていないだけでコンマを一致させる否定先読みです。

結果:

  ID Level QID         Text ResponseID \ 
0 375280046  S D3M    Which is your favorite?  D5M0 
1 375280046  S D3M How often? (at home, at work, other)  D3M0 
2 375280046  M A78    Do you prefer a, b, or c?  A78C 

    responseText    date_key 
0  option 1 2012-08-08 00:00:00 
1   Work 2010-03-31 00:00:00 
2   a 2010-03-31 00:00:00 
関連する問題