将字典中的数据转换为行

时间:2018-05-16 02:34:01

标签: python pandas csv

我有一个csv文件,格式如下:

id    data
1     [{'name':'Day 1', 'data':[12,13]},{'name':'Day 2', 'data':[34,45]}]

我希望它采用以下格式:

id    name     index    data
1     Day 1    0        12
1     Day 1    1        13
1     Day 2    0        34
1     Day 2    1        45 

我已尝试在数据列上执行pd.apply(Series),但它只将字典分隔为各自的列。关于如何做到这一点的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:2)

我的回答是冗余之王,使用apply(pd.Series),几次

(df.set_index('id').data
   .apply(pd.Series)
   .stack()
   .apply(pd.Series)
   .set_index('name',append=True).data
   .apply(pd.Series)
   .stack()
   .reset_index()
   .drop('level_1',axis=1)
)

   id   name  level_3   0
0   1  Day 1        0  12
1   1  Day 1        1  13
2   1  Day 2        0  34
3   1  Day 2        1  45