2017-09-05 58 views
0

字典的关键是日期,值是不同长度从字典中创建一个数据帧

例如列表,字典是

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 

回答

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