2015-11-13 18 views
7

中:読む私は私がパンダに読み込むCSVファイルを持っているすべてが、CSVファイルの最後の行パンダ

#!/usr/bin/env python 

import pandas as pd 
import sys 

filename = sys.argv[1] 
df = pd.read_csv(filename) 

残念ながら、これらのファイルの最後の行は、多くの場合、破損している(カンマの間違った番号を持っています)。現在、各ファイルをテキストエディタで開き、最後の行を削除します。

この特別な非自動化されたステップを踏まなければならないのを防ぐために、CSVをロードする同じpython/pandasスクリプトの最後の行を削除することはできますか?

+0

数字の抽出に関する質問を削除しましたが、とにかく私は 'str.extract'を使って提案するつもりでした:df.columns [2:]のcol:for: df [col] = df [col] .str.extract (r '(\ d +)')。astype(int) ' – EdChum

+0

@EdChumありがとう! – eleanora

+0

@EdChumあなたのコードは小数点を残していますか? – eleanora

答えて

7

パスerror_bad_lines=False、それはerror_bad_linesの利点は、それが誤ったライン上のBORKスキップしませんですが、最後の行が常にある場合ダフが、その後skipfooter=1

優れて自動的

df = pd.read_csv(filename, error_bad_lines=False) 

をこの行をスキップします

@DexterMorganのおかげで、skipfooterオプションは、csvを解析するためにcエンジンよりも遅いpythonエンジンを使用するようエンジンに強制します。

+0

私はそれを見たに違いありません。ありがとうございました! – eleanora

+1

'skipfooter'オプションに関して、' dtypes'オプションでは動作しないことが分かりました。 'ValueError: 'c'エンジンがskipfooterをサポートしていないため、 'python'これは 'python'エンジンでサポートされていないため、 'dtype'は無視されます。 'converters 'オプションは同様の機能を提供します。' –

+0

@DexterMorganは確実に追加します – EdChum

関連する問題