首页 > 解决方案 > 来自展平列类型系列或列表的数据框

问题描述

我想从我的起始数据集中获得一个数据集,如下所示:

time          details                  bis          as             go
01:20       {'direction': 'nord',      abc    {'a':12,'b':20 }     yes
                'label': 'one',
                'media': 'yes'}

01:25       {'direction': 'est',        def    {'a':2,'b':15 }     no
                'label': 'one',
                'media': 'no'}

期望的结果:

time     direction     label     media      bis       a     b     go
01:20      nord         one       yes       abc       12    20     yes

01:25      est         one         no       def        2    15     no

标签: pythonpandaslistdataframe

解决方案


使用pd.concat

result = pd.concat([df[['time', 'bis', 'go']],
                    pd.DataFrame.from_records(df.details),
                    pd.DataFrame.from_records(df['as'])], axis=1)

print(result)

输出

    time  bis   go direction label media   a   b
0  01:20  abc  yes      nord   one   yes  12  20
1  01:25  def   no       est   one    no   2  15

您可以像这样对列重新排序:

result = result[['time', 'direction', 'label', 'media', 'bis', 'a', 'b', 'go']]

推荐阅读