【问题标题】: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 方法,但收效甚微。

【问题讨论】:

    标签: python list pandas dataframe tuples


    【解决方案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 添加了解决方案。
    猜你喜欢
    • 2018-02-03
    • 2021-11-14
    • 2013-04-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2018-02-25
    • 2010-09-20
    相关资源
    最近更新 更多