将元组列表的dict转换为dataframe

时间:2017-08-28 08:35:42

标签: python list pandas dataframe tuples

我有一个形式元组列表的字典:

{identifier1:[(date1,value1),
              (date2,value2)],
 identifier2:[(date1,value1),
              (date3,value3),
              (date4,value4)]
} 

我试图将其解析为数据帧,但列表的长度不同,元组具有重复值。我想要的形状是三列标识符,日期和值,其中没有nan值。我尝试了各种组合,例如使用from_dict方法,但收效甚微。

1 个答案:

答案 0 :(得分:7)

您可以将列表理解与DataFrame构造函数(python 3)一起使用:

d = {'identifier1':[('date1','value1'),('date2','value2')],
     'identifier2':[('date1','value1'),('date3','value3'),('date4','value4')]}

L = [(k, *t) for k, v in d.items() for t in v]

df = pd.DataFrame(L, columns=['identifier','date','val'])
print (df)
    identifier   date     val
0  identifier1  date1  value1
1  identifier1  date2  value2
2  identifier2  date1  value1
3  identifier2  date3  value3
4  identifier2  date4  value4

python 2使用:

L = [(k, t[0], t[1]) for k, v in d.items() for t in v]

df = pd.DataFrame(L, columns=['identifier','date','val'])
print (df)
    identifier   date     val
0  identifier1  date1  value1
1  identifier1  date2  value2
2  identifier2  date1  value1
3  identifier2  date3  value3
4  identifier2  date4  value4