我有一个要转换为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
答案 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