我是 python 的初学者,我正在尝试将 json 有效负载转换为数据帧。
所以我得到的数据如下所示:
data = {
"results": [
{"values": [{"name": "firstname","value": "Fname1"},{"name": "lastname","value": "Lname1"}]},
{"values": [{"name": "firstname","value": "Fname2"},{"name": "lastname","value": "Lname2"}]},
{"values": [{"name": "firstname","value": "Fname3"},{"name": "lastname","value": "Lname3"}]}
]
}
我想要一个如下所示的数据框:
名字 | 姓氏 |
---|---|
Fname1 | Lname1 |
Fname2 | Lname2 |
Fname3 | Lname3 |
我试图弄清楚如何在不执行 for 循环或手动分配列名称之类的情况下执行此操作。谢谢!
有点尝试过这样的事情:
df = pd.DataFrame(data["results"])
df[['values'][0]].apply(lambda x: x[0]['value'])
结果是:
Fname1 |
Fname2 |
Fname3 |
但我有点不知道下一步该做什么。
在这种情况下,我会在创建 DataFrame 之前确保数据采用我想要的格式。
new_data = []
for i in data['results']:
row = {}
for j in i['values']:
row[j['name']] = j['value']
new_data.append(row)
print(new_data)
[{'firstname': 'Fname1', 'lastname': 'Lname1'},
{'firstname': 'Fname2', 'lastname': 'Lname2'},
{'firstname': 'Fname3', 'lastname': 'Lname3'}]
您可以使用
pd.DataFrame(new_data)
轻松创建 DataFrame。
我会使用嵌套列表/字典理解:
out = pd.DataFrame([{d['name']: d['value']
for d in l['values']}
for l in data['results']])