データベースからデータをロードするデータフレームdf
があります。ほとんどの列はjson文字列であり、いくつかはjsonsのリストでもあります。例:あなたが見ることができるようにいくつかの列を持つpandasデータフレームをjsonとしてフラット化する方法はありますか?
id name columnA columnB
1 John {"dist": "600", "time": "0:12.10"} [{"pos": "1st", "value": "500"},{"pos": "2nd", "value": "300"},{"pos": "3rd", "value": "200"}, {"pos": "total", "value": "1000"}]
2 Mike {"dist": "600"} [{"pos": "1st", "value": "500"},{"pos": "2nd", "value": "300"},{"pos": "total", "value": "800"}]
...
、すべての行が列のJSON文字列の要素の数が同じではありません。私はそう
from pandas.io.json import json_normalize
json_normalize(df)
ようjson_normalize
を使用してみましたが、それがあるとして、id
とname
のような通常の列を維持されませんので、
id name columnA.dist columnA.time columnB.pos.1st columnB.pos.2nd columnB.pos.3rd columnB.pos.total
1 John 600 0:12.10 500 300 200 1000
2 Mark 600 NaN 500 300 Nan 800
のようなJSON列を平らにするために必要なもの
しかし、keyerror
にいくつかの問題があるようです。これを行う正しい方法は何ですか?
列Bの値はどうなりますか?あなたも辞書を平らにしたいですか? – MMF
はい。彼らは同様に平らにする必要があります。元の質問にタイプミスがあり、ここではすべてのフラット化された列に対してcolumnAを配置しましたが、今すぐ修正しました。 – sfactor