2017-08-28 64 views
4

我有如下形式的元组的列表的字典:转换字典以数据帧

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

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

回答

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 
+0

在Python 3+这只作品,对不对? – Mathias711

+0

我想是的。我也为python 2添加了解决方案。 – jezrael