将列中的词典列表转换为同一数据帧中的多个列-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

一码平川MACHEL 2019-01-22 10:45:22 842

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

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"}]
我尝试了以下内容

df1=pd.concat([pd.DataFrame(x) for x
indf['C']],keys=df['A']).reset_index(level=1, drop=True).reset_index()
最终输出看起来像

A B name salary age
123 abc john 50000 28
345 bcd alex 40000 38
567 xyx Dave 30000 82

自然语言处理
分享到
取消 提交回答
全部回答(1)
  • 一码平川MACHEL
    2019-07-17 23:26:10

    IIUC,将你list的dicts 压缩成一个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'}]}}

    0 0
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

推荐文章
相似问题