关于python:从字典创建数据框

Create a dataframe from a dictionary

本问题已经有最佳答案,请猛点这里访问。

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

例如,字典是

1
dict = { '2017-09-01' : [A B] , '2017-09-02' : [C D E] }

我想要的是一个数据帧

1
2
3
4
5
6
date            Message
2017-09-01      A
2017-09-01      B
2017-09-02      C
2017-09-02      D
2017-09-02      E


您可以使用列表理解将字典变平,然后从中构造数据帧:

1
2
3
4
5
6
7
8
9
10
11
12
13
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的较长解决方案:

1
2
3
4
5
6
7
8
9
10
11
12
(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