首页 > 解决方案 > 如何从包含列表的字典列表中获取展平数据框?

问题描述

我正在尝试将这种数据结构扁平化为“普通”数据框。

原始数据是包含列表的字典列表。

数据如下所示(可重现的示例):

data = [{'A':[1,2,3,4], 'B':[11,12,13,14]}, {'A':[5,6,7,8], 'B':[15,16,17,18]}]

我想要的输出应该是以下熊猫数据框:

Out[01]: 
   A   B
0  1  11
1  2  12
2  3  13
3  4  14
4  5  15
5  6  16
6  7  17
7  8  18

我怎样才能达到这个结果?谢谢

标签: pythonpandasdictionaryflatten

解决方案


您可以使用pd.Series.explode

data = [{'A':[1,2,3,4], 'B':[11,12,13,14]}, {'A':[5,6,7,8], 'B':[15,16,17,18]}]

df = pd.DataFrame(data).apply(pd.Series.explode).reset_index(drop=True)

   A   B
0  1  11
1  2  12
2  3  13
3  4  14
4  5  15
5  6  16
6  7  17
7  8  18

或使用collections.defaultdict

from collections import defaultdict
new = defaultdict(list)

for d in data:
    for k, v in d.items():
        new[k].extend(v)

df = pd.DataFrame(new)

   A   B
0  1  11
1  2  12
2  3  13
3  4  14
4  5  15
5  6  16
6  7  17
7  8  18

推荐阅读