首页 > 解决方案 > Python - 将列的值从 DataFrame 转换为不同的列

问题描述

看看你能不能帮帮我,我目前有一个 JSON 文件(这个文件的内容实际上是 GET 请求的响应,所以我无法修改它):

[
    {
        
        "date": "1620157078",
        "value": "{\"license_plate\": \"1111 AAA\", \"brand\": \"Peugeot\"}"
    },
    {
        "date": "1620157080",
        "value": "{\"license_plate\": \"2222 BBB\", \"brand\": \"Audi\"}"
    }
]

我正在做的是将其转换为数据框,以便能够以下列方式使用它:

import json
import pandas as pd

with open('test.json', 'r') as f:
    file = f.read()
    file_json = json.loads(file)

df = pd.DataFrame(file_json)

df

数据框内容:

    date        value
0   1620157078  {"license_plate": "1111 AAA", "brand": "Peugeot"}
1   1620157080  {"license_plate": "2222 BBB", "brand": "Audi"}

我需要的是转换 value 字段的值,它是更多列中的字符串,最终得到这样的:

    date        license_plate   brand
0   1620157078  1111 AAA        Peugeot
1   1620157080  2222 BBB        Audi

我希望你能帮助我,我几乎一整天都在尝试进行修改,但我已经做到了。提前致谢。

标签: pythonjsonpandasdataframe

解决方案


你的 json 有value字段作为字符串,而不是 dict。您可以使用ast.literal_eval将它们变成字典:

from ast import literal_eval
df = pd.DataFrame(file_json)

(df.drop('value', axis=1)
   .join(pd.DataFrame(df['value'].apply(literal_eval).to_list()))
)

推荐阅读