Python-将DataFrame中的列值转换为不同的列

标签 python json pandas 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"}

我需要的是转换值字段的值,它是更多列中的字符串,最终得到如下所示的值:

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

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

最佳答案

内置和(Pandas 上游)解决方案包括使用 list comprehension 重新创建 file_json 的字典。和 dictionary unpacking .

>>> from ast import literal_eval
>>> file_json_2 = [{'date': d['date'], **literal_eval(d['value'])} for d in file_json]

然后,就像你已经做的那样

>>> pd.DataFrame(file_json_2)
         date license_plate    brand
0  1620157078      1111 AAA  Peugeot
1  1620157080      2222 BBB     Audi

关于Python-将DataFrame中的列值转换为不同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67392150/

相关文章:

python - python中的多个或条件合并

Python 在/usr/lib/x86_64-linux-gnu 中找不到 ldconfig -p 确实找到的库

python - 在 Tweepy 中以可用形式 (JSON) 提取数据

python - “系列”对象没有属性 'applymap'

python - 如何根据数据集的所有特征绘制预测值

python - 如何使用 tweepy 流式传输来自指定用户的推文(仅当该用户发布推文时才流式传输)

python - 如何从python numpy中的矩阵中获取 float

json - 将 Json 字符串解析为 Kotlin 对象会抛出 InvalidDefinitionException 和 Jackson

python用 'æøå'编码json

Python matplotlib,图上的时间戳