根据嵌套字典中的值构造数据框

时间:2018-10-25 16:24:03

标签: python pandas dictionary

我有一个要转换为pandas DataFrame的字典列表,但是我无法使用pandas.DataFrame.from_dict(),因为我希望将'name'键的值用作列标题而“持续时间”键的值就是行值。关于如何进行这项工作有什么建议吗?

[[{'duration': 21.82, 'name': 'ABC'},
{'duration': 3.9, 'name': 'DEF'},
{'duration': 105.78, 'name': 'GHI'},
{'duration': 63.14, 'name': 'JKL'}],
[{'duration': 18.9, 'name': 'ABC'},
{'duration': 56.01, 'name': 'DEF'},
{'duration': 38.36, 'name': 'GHI'},
{'duration': 34.16, 'name': 'JKL'}]]

所需的输出:

    ABC    DEF    GHI     JKL
0  21.82   3.9   105.78   63.14
1  18.9   56.01  38.36    34.16

1 个答案:

答案 0 :(得分:4)

您可以先通过itertools.chain展平列表列表,然后再通过pivot展平数据框。这里的技巧是使用一个索引,该索引由您的石斑鱼累计计数。

from itertools import chain

df = pd.DataFrame(list(chain.from_iterable(L)))

res = df.pivot(index=df.groupby('name').cumcount(), columns='name')
res.columns = res.columns.droplevel(0)  # remove unwanted column level

print(res)

name    ABC    DEF     GHI    JKL
0     21.82   3.90  105.78  63.14
1     18.90  56.01   38.36  34.16