web-dev-qa-db-ja.com

Pandasでタブ区切りファイルを読み取る-Windowsでは動作しますが、Macでは動作しません

WindowsでPandas/Pythonを使用して、タブ区切りのデータファイルを問題なく読み取りました。データファイルには、最初の3行にメモが含まれ、その後にヘッダーが続きます。

df = pd.read_csv(myfile,sep='\t',skiprows=(0,1,2),header=(0))

現在、このファイルをMacで読み取ろうとしています。 (Macで初めてPythonを使用します。)次のエラーが表示されます。

pandas.parser.CParserError: Error tokenizing data. C error: Expected 1
fields in line 8, saw 39

read_csverror_bad_lines引数をFalseに設定すると、次の情報が得られ、最後の行の終わりまで続きます。

Skipping line 8: expected 1 fields, saw 39
Skipping line 9: expected 1 fields, saw 125
Skipping line 10: expected 1 fields, saw 125
Skipping line 11: expected 1 fields, saw 125
Skipping line 12: expected 1 fields, saw 125
Skipping line 13: expected 1 fields, saw 125
Skipping line 14: expected 1 fields, saw 125
Skipping line 15: expected 1 fields, saw 125
Skipping line 16: expected 1 fields, saw 125
Skipping line 17: expected 1 fields, saw 125
...

encoding引数に値を指定する必要がありますか? Windowsでファイルの読み取りが正常に機能するため、必要のないように思えます。

55
user3062149

最大の手がかりは、行がすべて1行で返されることです。これは、行末記号が無視されているか存在しないことを示します。

Csv_readerの行末記号を指定できます。 Macを使用している場合、作成される行は、Linux標準\rではなく\nで終わるか、\r\nを使用したウィンドウのサスペンダーとベルトのアプローチで終了します。

pandas.read_csv(filename, sep='\t', lineterminator='\r')

コーデックパッケージを使用してすべてのデータを開くこともできます。これにより、ドキュメントの読み込み速度を犠牲にして堅牢性を高めることができます。

import codecs

doc = codecs.open('document','rU','UTF-16') #open for reading with "universal" type set

df = pandas.read_csv(doc, sep='\t')
69
brad sanders

別のオプションは、engine='python'をコマンドpandas.read_csv(filename, sep='\t', engine='python')に追加することです

1
user3479780