将一列中的词典列表转换为同一数据框中的多列

时间:2019-01-21 01:27:40

标签: python pandas

我的数据框有一列带有字典列表的列。如何将其转换为扩展的数据帧?数据框如下所示。

animation: bounce 450ms 1.5s;

我尝试了以下

animation-duration

最终输出看起来像

A       B       C
123    abc    [{"name":"john"},{"age":"28"},{"salary":"50000"}]
345    bcd    [{"name":"alex"},{"age":"38"},{"salary":"40000"}]
567    xyx    [{"name":"Dave"},{"age":"82"},{"salary":"30000"}]

1 个答案:

答案 0 :(得分:2)

IIUC,将list中的dict展平为一个dict,然后我们使用dataframe构造函数,只需要将concat回到原始df

from itertools import chain
s=pd.DataFrame([dict(chain(*map(dict.items,x))) for x in df.pop('C').tolist()],index=df.index)
s
  age  name salary
0  28  john  50000
1  38  alex  40000
2  82  Dave  30000
s=pd.concat([df,s],1)
s
     A    B age  name salary
0  123  abc  28  john  50000
1  345  bcd  38  alex  40000
2  567  xyx  82  Dave  30000

数据输入:

df.to_dict()
{'A': {0: 123, 1: 345, 2: 567}, 'B': {0: 'abc', 1: 'bcd', 2: 'xyx'}, 'C': {0: [{'name': 'john'}, {'age': '28'}, {'salary': '50000'}], 1: [{'name': 'alex'}, {'age': '38'}, {'salary': '40000'}], 2: [{'name': 'Dave'}, {'age': '82'}, {'salary': '30000'}]}}