字典的关键是日期,值是不同长度的列表
例如,字典是
dict = { '2017-09-01' : [A B] , '2017-09-02' : [C D E] }
我想要的是像
这样的数据帧date Message
2017-09-01 A
2017-09-01 B
2017-09-02 C
2017-09-02 D
2017-09-02 E
答案 0 :(得分:2)
您可以使用列表推导来展平字典,然后从中构建数据框:
d = { '2017-09-01' : ['A', 'B'] , '2017-09-02' : ['C', 'D', 'E'] }
pd.DataFrame(
[(k, val) for k, vals in d.items() for val in vals],
columns=['date', 'message']
)
# date message
#0 2017-09-01 A
#1 2017-09-01 B
#2 2017-09-02 C
#3 2017-09-02 D
#4 2017-09-02 E
使用pandas.stack
的更长解决方案:
(pd.DataFrame.from_dict(d, 'index').stack()
.rename('message')
.rename_axis(('date', ''))
.reset_index(level=0)
.reset_index(drop=True))
# date message
#0 2017-09-01 A
#1 2017-09-01 B
#2 2017-09-02 C
#3 2017-09-02 D
#4 2017-09-02 E