2017-09-05 46 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