gpt4 book ai didi

python - 当值完全为字符串格式时,如何将 json 转换为 pandas 数据框

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

我正在尝试将数据从 json 转换为数据框。我的儿子

{"data":"key=IAfpK, age=58, key=WNVdi, age=64, key=jp9zt, age=47, key=0Sr4C, age=68, key=CGEqo, age=76,
key=IxKVQ, age=79, key=eD221, age=29, key=XZbHV, age=32, key=k1SN5, age=88, key=4SCsU, age=65, key=q3kG6,
age=33, key=MGQpf, age=13, key=Kj6xW, age=14, key=tg2VM, age=30, key=WSnCU, age=24, key=f1Vvz, age=46, }

我想创建一个以键和年龄作为列的数据框。我已经解析了 str 并提取了键,值,创建了一个字典,然后转换为数据框。我知道 pandas 中有几个内置功能可以让我们的生活更轻松。有没有这样的方法或更简单的方法来创建数据框。

r = requests.get('https://coderbyte.com/api/challenges/json/age-counting')
input_str = (r.json()['data'])

input_str_split = input_str.split(',')
age_dict = {}
i = 0
while i < len(input_str_split) - 2:
key = input_str_split[i].split('=')[1]
value = input_str_split[i+1].split('=')[1]
age_dict[key] = value
i += 2

data = pd.DataFrame(age_dict.items(),columns = ['Item','Age'])

最佳答案

您可以尝试list-conprehension,然后使用data[::2] 选择每两个元素:

data = [x.split("=")[1] for x in input_str.split(", ")]
df = pd.DataFrame({"age": data[1::2], "key": data[::2]})

print(df)
# age key
# 0 58 IAfpK
# 1 64 WNVdi
# 2 47 jp9zt
# 3 68 0Sr4C
# 4 76 CGEqo
# .. .. ...
# 295 13 lRf1j
# 296 50 0iJGV
# 297 5 cFCfU
# 298 48 J8an1
# 299 5 dkSlj

解释:

  1. 使用 split 拆分数据以识别每个元素: input_str.split(", ")
  2. 展开每个元素以选择 = 之后的值:[x.split("=")[1] for x in input_str.split(", ")]
  3. 通过选择每两个元素来创建数据框:df = pd.DataFrame({"age": data[1::2], "key": data[::2]})

全图:

r = requests.get('https://coderbyte.com/api/challenges/json/age-counting')
input_str = r.json().get('data')

print(input_str.split(", "))
# ['key=IAfpK', 'age=58', 'key=WNVdi', 'age=64', ... 'key=dkSlj', 'age=5']

print([x.split("=") for x in input_str.split(", ")])
# [['key', 'IAfpK'], ['age', '58'], ['key', 'WNVdi'], ['age', '64'], ... , ['key', 'dkSlj'], ['age', '5']]

print([x.split("=")[1] for x in input_str.split(", ")])
# ['IAfpK', '58', 'WNVdi', '64', ..., 'dkSlj', '5']

data = [x.split("=")[1] for x in input_str.split(", ")]

print(data[1::2])
# ['58', '64', ... , '5']
df = pd.DataFrame({"age": data[1::2], "key": data[::2]})
print(df)
# age key
# 0 58 IAfpK
# 1 64 WNVdi
# 2 47 jp9zt
# 3 68 0Sr4C
# 4 76 CGEqo
# .. .. ...
# 295 13 lRf1j
# 296 50 0iJGV
# 297 5 cFCfU
# 298 48 J8an1
# 299 5 dkSlj

# [300 rows x 2 columns]

关于python - 当值完全为字符串格式时,如何将 json 转换为 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67516368/

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