从字典创建数据框

时间:2017-09-05 23:43:53

标签: python pandas

字典的关键是日期,值是不同长度的列表

例如,字典是

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

1 个答案:

答案 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