问题是这样的:
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()]))
有没有更好更有效的方法来解决这个问题?
答案 0 :(得分:3)
首先,不要将dict
命名为 dict
然后我们查看问题,我正在使用pd.Series
与stack
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