如何在数据框的一行中的列表内解压缩多个字典对象?

我有一个带有以下字典的数据框,该字典在每行和每行的单个列表中,列表的大小不同,它们的大小也不同,如下所示:


ID    unnest_column


1     [{'abc': 11, 'def': 1},{'abc': 15, 'def': 1},

     {'abc': 16, 'def': 1},

     {'abc': 17, 'def': 1},

     {'abc': 18, 'def': 1, 'ghi': 'abc'},

     {'abc': 23, 'def': 'xxx', 'def': 1},

     {'abc': 23, 'def': 'xxx', 'def': 2},

     {'abc': 23, 'def': 'xxx', 'def': 4}]



2   [{'abc': 11, 'def': 1}]

如何解压缩列表中的字典并创建键值列?


新的df可能(不确定确切的外观),只需要在各列中输入键即可:


id    abc    def     ghi


1       2             3         abc


鸿蒙传说
浏览 162回答 1
1回答

GCT1015

df = pd.DataFrame()df['x'] = [[{'QuestionId': 11, 'ResponseId': 1},{'QuestionId': 15, 'ResponseId': 1}, {'QuestionId': 16, 'ResponseId': 1}, {'QuestionId': 17, 'ResponseId': 1}, {'QuestionId': 18, 'ResponseId': 1, 'Value': 'abc'}, {'QuestionId': 23, 'DataLabel': 'xxx', 'ResponseId': 1}, {'QuestionId': 23, 'DataLabel': 'xxx', 'ResponseId': 2}, {'QuestionId': 23, 'DataLabel': 'xxx', 'ResponseId': 4}],[{'QuestionId': 11, 'ResponseId': 1}]]您可以sum将列表进行汇总,然后使用DataFrame构造函数new_df = pd.DataFrame(df.x.values.sum())    DataLabel   QuestionId  ResponseId  Value0   NaN         11          1           NaN1   NaN         15          1           NaN2   NaN         16          1           NaN3   NaN         17          1           NaN4   NaN         18          1           abc5   xxx         23          1           NaN6   xxx         23          2           NaN7   xxx         23          4           NaN8   NaN         11          1           NaN如果要维护原始索引,可以构建一个inds列表并将其作为参数传递给构造函数:inds = [index for _ in ([i] * len(v) for i,v in df.x.iteritems()) for index in _]pd.DataFrame(df.x.values.sum(), index=inds)    DataLabel   QuestionId  ResponseId  Value0   NaN         11          1           NaN0   NaN         15          1           NaN0   NaN         16          1           NaN0   NaN         17          1           NaN0   NaN         18          1           abc0   xxx         23          1           NaN0   xxx         23          2           NaN0   xxx         23          4           NaN1   NaN         11          1           NaN
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python