如何从字典中有效地构造数据帧(pandas)

时间:2018-05-21 19:13:35

标签: python list pandas dictionary dataframe

问题是这样的:

dict = {0:['A', 'B','C'], 1:'D'}

我想转移到数据框:

|index|values|
--------------
|  0  |   A  |
--------------
|  0  |   B  |
--------------
|  0  |   C  |
--------------
|  1  |   D  |
--------------

所以我的想法是将字典转换为元组列表:

dict = [(0,'A'), (0,'B'), (0,'C'), (1,'D')]

然后我可以创建我想要的数据帧:

pd.Dataframe(dict)

对于字典转换,我一直在使用的是:

为列表

创建一个展平函数
flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]

使用list comprehension来构造元组列表

pd.DataFrame(flatten([[(i,jj) for jj in j] for (i, j) in dict.items()]))

有没有更好更有效的方法来解决这个问题?

1 个答案:

答案 0 :(得分:3)

首先,不要将dict命名为 dict

然后我们查看问题,我正在使用pd.Seriesstack

pd.Series(d).apply(pd.Series).stack().reset_index(level=1,drop=True)
Out[149]: 
0    A
0    B
0    C
1    D
dtype: object
相关问题