2017-06-13 12 views
0

私は持っている巨大なcsvファイルからデータを読み取ろうとしています。私はこのエラーUnicodeDecodeError: 'utf-8' codec can't decode byte 0xae in position 13: invalid start byteを私に見せている。この例外をスローする原因となる行をスキップする方法はありますか?何百万という行から、これらはほんの一握りであり、手動でそれらを削除することはできません。私はerror_bad_lines = Falseを追加しようとしましたが、それは問題を解決しませんでした。 Anaconda 4.4.0を使ってPython 3.6.1を使用しています。私はそれが役立つならば、Macを使用しています。私はこれに新しいです。pandasからread_csvを使用してcsvファイルを誤って読み取る

答えて

0

あなたのファイルにはデコードできない非アスキー文字がいくつかあるようです。 (それは場合に役立ちます)パンダはread_csvの引数としてエンコーディングを受け入れる:

my_file = pd.read_csv('Path/to/file.csv', encoding = 'encoding') 

デフォルトのエンコーディングを使用すると、これらのエラーを取得する可能性がある理由である、Noneです。 Here is a link to the standard Python encodings - 「ISO-8859-1」(別名「latin1」)または「utf8」を試してみてください。

パンダでは、csvを読み込むときにスキップする行を指定できますが、その場合は非常に難しい行のインデックスを知る必要があります。

+0

私はcsvファイルを読み込めました。しかし、ファイルからの黒いセルごとに、DataFrameはnanと表記します。私は 'df.col [0] == nan'のような等価文を作成したい。しかし、それはナノが定義されていないと言います。平等声明に何を入れることができますか? – anon

+0

"nan"の行を削除しますか?あなたがそれをしたい場合は、あなたが 'のDFの= dfのような何かを行うことができます[df.Column_nameは "ナン" ==]' 作業をする必要があり、または[ 'Column_nameの']。STR DF 'のDFの= dfの[。 compare( "nan")] ' インデックスiとjを持つdf.iat [i、j] ==" nan "'のような値を持つセルを見つけるには、 'のようにします。 – Peter

関連する問題