0
私は何百万という行を持つ大きなjsonファイルを持っています。このファイルにもいくつかのエラーメッセージがあります。以下のサンプルである:予想されたようにパンダを使ってjson行を解析する
{"MEASUREMENT_1":"12345678","MEASUREMENT_2":"123456789012","MEASUREMENT_3":"MEASUREMENT_TYPE","MEASUREMENT_4":1111111111111,"MEASUREMENT_5":-1122,"MEASUREMENT_6":-2233,"MEASUREMENT_7":"123456789"}
{"MEASUREMENT_1":"87654321","MEASUREMENT_2":"98","MEASUREMENT_3":"MEASUREMENT_TYPE_2","MEASUREMENT_4":222222222222,"MEASUREMENT_5":-4455,"MEASUREMENT_6":-6677,"MEASUREMENT_7":"123456789"}
[2015-12-02 02:00:02,530] WARN Reconnect due to socket error: null
[2015-12-02 02:00:02,633] WARN Reconnect due to socket error: null
、以下のコードは、ファイルためのエラーメッセージ行のValueError
をスロー。
#!/usr/bin/python3.5
import pandas as pd # Version 0.21.0
df = pd.read_json(file, lines=True)
これは非常に大きなファイルであるため、私は以下のように、chunksize
とexpectionを使用しています
max_records = 1e5
df = pd.read_json(file, lines=True, chunksize=max_records)
filtered_data = pd.DataFrame() # Initialize the dataframe
try:
for df_chunk in df:
filtered_data = pd.concat([filtered_data, df_chunk])
except ValueError:
print ('\nSome messages in the file cannot be parsed')
しかし、上記の方法の欠点は、それが線の一部が欠けています。これを行うための良い方法はありますか?私はhttp://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.htmlのドキュメントを調べましたが、解析されていない行を無視できるものは見つかりませんでした。助けてもらえますか?
これらの行を削除することは可能ですか? –
それぞれの "測定"のように、独自のjsonオブジェクトがあるので、おそらくファイルにjsonオブジェクトがたくさんあり、失敗する可能性があります。 –
forループの各繰り返し内のtryブロックではなく、tryブロック内にforループがあるのはなぜですか? – Acccumulation