首页 > 解决方案 > 将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'}

标签: pythonjsonpandas

解决方案


好吧,我建议

  1. 将每个 json 转换为 dict
  2. 将每个 dict 转换为 DataFrame
  3. 连接所有数据帧,保留索引

数据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

推荐阅读