python - 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
我希望你能帮助我,我几乎一整天都在尝试进行修改,但我已经做到了。提前致谢。
解决方案
你的 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()))
)
推荐阅读
- python - 将图像数据转换为无符号整数类型以与 OpenCV 一起使用时出现问题
- ionic5 - 如何在ionic 5中使用contact.pickContact选择联系人
- windows - 如何在 Windows 启动时运行 CMD 命令?
- ruby-on-rails - 提交表单后,我想让我的代码推送到我的所有歌曲页面
- servicestack - 选择多个表和自定义列到 POCO
- vba - 使用 VBA 创建剖面、切片或长方体
- java - 导入 java.util.stream.Collectors 无法解析
- python-3.x - ModuleNotFoundError:python 中没有名为“display”的模块
- bazel - 如何使用 bazel 测试在 googletest 测试用例中写入文件?
- svelte - 动态换字 Svelte