gpt4 book ai didi

python - 从 2 个 json api 创建 json 并应用于每个轴的函数

转载 作者:行者123 更新时间:2023-12-02 01:33:53 24 4
gpt4 key购买 nike

我的 df 的第一列是 uid,第二列是 url_json1,第三列是 url_json2,预期输出在第四列中。 url_json1 和 url_json2 中的 key 类似。因此,无论我们对列上的数据框应用什么函数,它都将应用于所有函数

我有 3 个数据,从 uid 开始,从 10011003

uid
1001
1002
1003

第二列url_json1

第一行内的数据url_json1

    {
"quiz": {
"sport": {
"result": {
"question": "Which one is correct team name in NBA?",
"answer": "Huston Rocket"
}
}
}
}

third_column 第一行 url_json2

{
"quiz": {
"sport": {
"result": {
"question": "Which one is correct team name in football?",
"answer": "Chelsea"
},
"type": "document"
}
}
}

输出json

{
“1001”:{
“url_1”:{
"question": "哪一个是NBA正确的球队名称?",
“答案”:“休斯顿火箭”
},
“url_2”:{
"question": "哪一个是足球中正确的球队名称?",
“答案”:“切尔西”
}
}
}

最佳答案

用途:

from collections import defaultdict
import json

a = {
"quiz": {
"sport": {
"result": {
"question": "Which one is correct team name in NBA?",
"answer": "Huston Rocket"
}
}
}
}
b = {
"quiz": {
"sport": {
"result": {
"question": "Which one is correct team name in football?",
"answer": "Chelsea"
},
"type": "document"
}
}
}

df = pd.DataFrame({'uid':['1001','1002'],
'url_json1':[json.dumps(a), json.dumps(a)],
'url_json2':[json.dumps(b), json.dumps(b)]})
#print (df)

N json 列的解决方案(带有 uid 列的 DataFrame 和所有其他列均由 json 填充):

def func(x):
#extract uid to variable
uid = x.pop('uid')
#storage for nested dicts
d = defaultdict(dict)
#loop by all json columns and update defaultdict
for i, y in enumerate(x, 1):
#convert json to dict
y = json.loads(y)
d[uid].update({f'url_{i}': y['quiz']['sport']['result']})
#convert back to json
return json.dumps(dict(d))

df['new'] = df.apply(func, axis=1)
print (df)
uid url_json1 \
0 1001 {"quiz": {"sport": {"result": {"question": "Wh...
1 1002 {"quiz": {"sport": {"result": {"question": "Wh...

url_json2 \
0 {"quiz": {"sport": {"result": {"question": "Wh...
1 {"quiz": {"sport": {"result": {"question": "Wh...

new
0 {"1001": {"url_1": {"question": "Which one is ...
1 {"1002": {"url_1": {"question": "Which one is ...

如果只有 2 个 json 列,解决方案很简单:

def func(x):
d1 = json.loads(x['url_json1'])['quiz']['sport']['result']
d2 = json.loads(x['url_json2'])['quiz']['sport']['result']
uid = x['uid']

d = {uid:{'url_1':d1, 'url_2':d2}}
return json.dumps(d)

df['new'] = df.apply(func, axis=1)

关于python - 从 2 个 json api 创建 json 并应用于每个轴的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59433942/

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