我试图获得'描述'的价值。第一个' x'' y'与json文件中的描述相关,所以我使用了pandas.io.json.json_normalize并在页面末尾跟着this example但是收到错误: KeyError:("尝试使用错误运行='忽略'因为键%s并不总是存在",KeyError(' description',))
我如何获得'描述'的价值? "播放"和#34;游戏"第一个' x'' y'从下面的json文件中分别描述(0,2)和(1,2)并将结果保存为数据框?
我编辑了代码,我希望得到这个结果:
0 1 2 3
0 Play Game
1
2
3
4
但游戏不在x,y应该是。
import pandas as pd
from pandas.io.json import json_normalize
data = [
{
"responses": [
{
"text": [
{
"description": "Play",
"bounding": {
"vertices": [
{
"x": 0,
"y": 2
},
{
"x": 513,
"y": -5
},
{
"x": 513,
"y": 73
},
{
"x": 438,
"y": 73
}
]
}
},
{
"description": "Game",
"bounding": {
"vertices": [
{
"x": 1,
"y": 2
},
{
"x": 307,
"y": 29
},
{
"x": 307,
"y": 55
},
{
"x": 201,
"y": 55
}
]
}
}
]
}
]
}
]
#w is columns h is rows
w, h = 4, 5;
Matrix = [[' ' for j in range(w)] for i in range(h)]
for row in data:
for response in row["responses"]:
for entry in response["text"]:
Description = entry["description"]
x = entry["bounding"]["vertices"][0]["x"]
y = entry["bounding"]["vertices"][0]["y"]
Matrix[x][y] = Description
df = pd.DataFrame(Matrix)
print(df)
答案 0 :(得分:0)
你需要像这样将data[0]['responses'][0]['text']
传递给json_normalize
df = json_normalize(data[0]['responses'][0]['text'],[['bounding','vertices']], 'description')
将导致
x y description
0 438 -5 Play
1 513 -5 Play
2 513 73 Play
3 438 73 Play
4 201 29 Game
5 307 29 Game
6 307 55 Game
7 201 55 Game
我希望这是你所期待的。
编辑:
df.groupby('description').get_group('Play').iloc[0]
会为您提供小组的第一项' play'
x 438
y -5
description Play
Name: 0, dtype: object