将数据框中的Json字符串转换为多列

时间:2019-02-19 12:47:45

标签: python pandas numpy

我正在尝试将具有json字符串的列从json数据转换为多列。 示例数据:

       1
  0
id1    {"c1": ["a","b"], "c2": [.1, .2], "c3": ["3","1"]}
id2    {"c1": ["c","d"], "c2": [.7, .4], "c3": ["8","4"]}

我怎么把它变成:

    c1  c2  c3
id1 a  .1   3
    b  .2   1
id2 c  .7   8
    d  .4   4

如何仅使用熊猫函数来实现此目的?

1 个答案:

答案 0 :(得分:2)

dictionary comprehensionast.literal_eval一起用于将字符串转换为字典和列表:

import ast

df = pd.concat({k: pd.DataFrame(ast.literal_eval(v)) for k, v in df[1].items()})
print (df)
      c1   c2 c3
id1 0  a  0.1  3
    1  b  0.2  1
id2 0  c  0.7  8
    1  d  0.4  4

如果需要删除MultiIndex

df = df.reset_index(level=1, drop=True)
print (df)
    c1   c2 c3
id1  a  0.1  3
id1  b  0.2  1
id2  c  0.7  8
id2  d  0.4  4