Pandas で JSON の key となる部分がインデックス指向*1となっているJSONを読み込ませたい場合、read_JSON()
関数にorient='index'
オプションを設定すればうまくいく。
サンプルデータ
{ "0": { "name": "Nieves Finch", "gender": "male", "company": "XYQAG" }, "1": { "name": "Frank Francis", "gender": "male", "company": "QUIZKA" }, "2":{ "name": "Erna Nieves", "gender": "female", "company": "ISOPLEX" } }
まずはorient='index'
オプション無しで読み込む
s = '''{ "0": { "name": "Nieves Finch", "gender": "male", "company": "XYQAG" }, "1": { "name": "Frank Francis", "gender": "male", "company": "QUIZKA" }, "2":{ "name": "Erna Nieves", "gender": "female", "company": "ISOPLEX" } } ''' df = pd.read_json(s) df
0,1,2 をインデックスとしたいが、name
, gender
, company
がインデックスになっている。
これを読み込みの段階から正しくなるようにする。
0 1 2 name Nieves Finch Frank Francis Erna Nieves gender male male female company XYQAG QUIZKA ISOPLEX
サンプルコード
s = '''{ "0": { "name": "Nieves Finch", "gender": "male", "company": "XYQAG" }, "1": { "name": "Frank Francis", "gender": "male", "company": "QUIZKA" }, "2":{ "name": "Erna Nieves", "gender": "female", "company": "ISOPLEX" } } ''' df = pd.read_json(s, orient='index') df
無事に読み込む形が変わった!
name gender company 0 Nieves Finch male XYQAG 1 Frank Francis male QUIZKA 2 Erna Nieves female ISOPLEX