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