将字典列出到数据框中的行/列

问题描述 投票:0回答:2

我是 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

但我有点不知道下一步该做什么。

python pandas dataframe
2个回答
0
投票

在这种情况下,我会在创建 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。


0
投票

我会使用嵌套列表/字典理解:

out = pd.DataFrame([{d['name']: d['value']
                     for d in l['values']}
                    for l in data['results']])
© www.soinside.com 2019 - 2024. All rights reserved.