python - 将pandas系列的json对象转换为DataFrame
问题描述
我试图弄清楚如何将 Pandas 系列的 json 对象从 DataFrame 的切片转换为以键为列的新 DataFrame。我尝试了所有类似的解决方案,但似乎没有任何效果。它要么返回相同的系列,要么生成错误。有些行有不同的键,它们并不完全相同,元素的数量也不同。变化量有限,因此每个键都可以有自己的列。有没有办法将这种类型的系列转换为 DataFrame?
1 {'length': '27 mm', 'style': 'Short', 'width': '9 mm'}
2 {'length': '51 mm', 'style': 'Long', 'width': '9 mm'}
5 {'length': '29 mm', 'style': 'Medium', 'width': '9 mm','id': '16684'}
6 {'width': '7 mm', 'length': '29 mm', 'style': 'Medium','mfg': '45-163'}
8 {'width': '8 mm', 'length': '33 mm', 'style': 'Medium'}
解决方案
好吧,我建议
- 将每个 json 转换为 dict
- 将每个 dict 转换为 DataFrame
- 连接所有数据帧,保留索引
数据series
在这个例子中。它也替换'
为"
:
import json
pd.concat([pd.DataFrame(json.loads(s), index=[ind]) for ind, s in series.str.replace('\'', '"').items()], sort=False)
length style width id mfg
1 27 mm Short 9 mm NaN NaN
2 51 mm Long 9 mm NaN NaN
5 29 mm Medium 9 mm 16684 NaN
6 29 mm Medium 7 mm NaN 45-163
8 33 mm Medium 8 mm NaN NaN
推荐阅读
- python - 尝试在 Python 中将数据添加到 mysql 数据库中的表时出现未知列错误
- python - 如何在 python 中以日期格式转换 xsd:duration?
- node.js - 无法在路由定义之前分配中间件
- reactjs - 使用带有默认组件的 Material-UI 系统
- linux - 读取时显示“找不到命令”的 Unix 脚本
- python - 将两个数组转换为与`findContours`的结果兼容的数组数组
- d3.js - 获取用d3绘制的元素的绝对坐标
- java - 调整 G1GC 年轻收集频率
- python - Django 搜索页面
- css - 2个css动画调用1个元素