PandasでCSVファイルを読み込む処理を作りたいと思っています。
現在、Djangoを使用して、ファイルアップローダを作成し、CSVファイルを読み込めるようにはなっております。
しかし、行に対する列数が異なるファイルをアップロードしようとすると、parseerrorとなってしまいます。
Python
1import pandas as pd 2df = pd.read_csv('CSV_file', header=None, low_memory=False)
としてPandasでファイルを読み込んでおります。
ここで、引数としてnamesを与え列名を付与すれば足りない部分を欠損値として埋めて読み込むことができる、ということや、引数error_bad_lines=Falseにすればおかしな行を飛ばして読み込んでくれるということはわかります。
一方で、読み込むCSVファイルに対して、列数の規定を設け、列数が規定と異なる場合は処理を終了するようにしております。引数namesを与えてしまうと、すべてのファイルが規定を満たしてしまうことになると気づきました。
また、header=Noneとしているので、Pandasが勝手に列名を与えてくれているのだと思うのですが、その列名ではnamesで列名を与えたような形でファイルを読み込んではくれないようです。
このような場合、規定のカラム数でのバリデーション(?)を維持しつつ、parseerrorにならないような方法はあるのでしょうか?
ご教示くださいますと幸いです。よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/26 23:57 編集
2018/08/27 01:58
2018/08/27 02:16