将元组列表的字典转换为数据框

Posted

技术标签:

【中文标题】将元组列表的字典转换为数据框【英文标题】:convert dict of lists of tuples to dataframe 【发布时间】:2018-02-05 11:31:41 【问题描述】:

我有以下形式的元组列表的字典:

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

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

【问题讨论】:

【参考方案1】:

您可以将列表推导式与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

【讨论】:

我认为是的。我也为 python 2 添加了解决方案。

以上是关于将元组列表的字典转换为数据框的主要内容,如果未能解决你的问题,请参考以下文章

将元组列表转换为字典

Python:将元组列表转换为dict列表

如何将元组列表转换为 pandas 数据框,以便每个元组的第一个值代表一列?

将元组中的列表转换为numpy数组?

列表元组字典集合与字符串

将元组的无序列表转换为 pandas DataFrame