gpt4 book ai didi

pandas - 如何在不循环的情况下将 python JSON 列表转换为数据框列

转载 作者:行者123 更新时间:2023-12-05 03:41:52 28 4
gpt4 key购买 nike

我正在使用 python 并试图找出如何在不使用循环的情况下执行以下操作。

我有一个包含多个列的数据框,其中包含一个包含 JSON 对象列表的列。我想要做的是将 JSON 字符串列转换为数据框中它们自己的列。例如我有以下数据框:

<表类="s-表"><头>姓名年龄组<正文>约翰35[{"testid": "001", "marks": 67}, {"testid": "002", "marks": 70}]安20[{"testid": "001", "marks": 75}, {"testid": "002", "marks": 80}, {"testid": "003", "marks": 87 }]艾玛25[{"testid": "001", "marks": 90}, {"testid": "002", "marks": 99}]

我想按如下方式获得 testid = 001 和 testid = 002 的分数。

<表类="s-表"><头>姓名年龄test_id1test_id2<正文>约翰356770安207580艾玛259099

这是我的数据集

[
{
"name":"John",
"age":35,
"group":[
{
"testid":"001",
"marks":67
},
{
"testid":"002",
"marks":70
}
]
},
{
"name":"Ann",
"age":20,
"group":[
{
"testid":"001",
"marks":75
},
{
"testid":"002",
"marks":80
},
{
"testid":"003",
"marks":87
}
]
},
{
"name":"Emma",
"age":25,
"group":[
{
"testid":"001",
"marks":90
},
{
"testid":"002",
"marks":99
}
]
}
]

任何想法都将受到高度赞赏。谢谢。

最佳答案

列表推导在提取数据时很方便;作为旁注,如果可以的话,可能会在将类似数据的数据放入数据帧之前进行提取(这样做效率更高):

outcome = [[entry[num]['marks']
for num in range(len(entry))
if entry[num]['testid'] in ('001', '002')]
for entry in df.group]

print(outcome)
[[67, 70], [75, 80], [90, 99]]

压缩数据,并分配给数据框中的新列名:

test_id1, test_id2 = zip(*outcome)

df.filter(['name', 'age']).assign(test_id1 = test_id1, test_id2 = test_id2)

name age test_id1 test_id2
0 John 35 67 70
1 Ann 20 75 80
2 Emma 25 90 99

关于pandas - 如何在不循环的情况下将 python JSON 列表转换为数据框列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67540741/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com