【问题标题】:Converting dictionary of tuples and lists as key values to pandas dataframe将元组和列表的字典作为键值转换为熊猫数据框
【发布时间】:2021-10-17 15:36:33
【问题描述】:

我有一个字典,其中元组作为键,值作为列表。 我想将其转换为 pandas 数据框,以便稍后将其导出为 Excel 表格。

有人可以建议一种干净的方法来实现下表吗?我想将列表中的元素放在单独的列中。

dict={(a,b):[1,2][4,5],(a,c):[7,8][1,3],(b,c):[1,8][1,3]}

K X Y
a,b 1 2
a,b 4 5
a,c 7 8
a,c 1 3
b,c 1 8
b,c 1 3

试过了,没有得到想要的结果: df=pd.DataFrame.from_dict(dict, orient='index').T

【问题讨论】:

    标签: python pandas dictionary python-3.6


    【解决方案1】:

    用途:

    import pandas as pd
    
    # toy data
    dic = {("a", "b"): [[1, 2], [4, 5]], ("a", "c"): [[7, 8], [1, 3]], ("b", "c"): [[1, 8], [1, 3]]}
    
    # un-ravel the data to create the rows of the DataFrame
    data = [[key, *value] for key, values in dic.items() for value in values]
    
    # actually create the DataFrame
    df = pd.DataFrame(data, columns=["K", "X", "Y"])
    print(df)
    

    输出

            K  X  Y
    0  (a, b)  1  2
    1  (a, b)  4  5
    2  (a, c)  7  8
    3  (a, c)  1  3
    4  (b, c)  1  8
    5  (b, c)  1  3
    

    表达式:

    data = [[key, *value] for key, values in dic.items() for value in values]
    

    list comprehension,相当于:

    data = []
    for key, values in dic.items():
        for value in values:
            data.append([key, *value])
    

    【讨论】:

      【解决方案2】:

      检查这是否有帮助:

      import pandas as pd
      dict={('a','b'):[[1,2],[4,5]],('a','c'):[[7,8],[1,3]],('b','c'):[[1,8],[1,3]]}
      dt = []
      for k,v in dict.items():
          for ls in v:
              dt.append([k,ls[0],ls[1]])
      
      df = pd.DataFrame(dt,columns = ['Key','x','y'])
      
      print (df)
      

      【讨论】:

      • 谢谢,我试过了。我收到错误 - AttributeError: 'dict' object has no attribute 'append'。一个键的值列表,在我的字典中没有逗号。
      • @krem 不管怎样你得到了预期的答案,很好
      猜你喜欢
      • 2021-11-19
      • 2017-12-12
      • 2018-11-25
      • 1970-01-01
      • 2016-09-06
      • 2017-11-22
      • 2017-10-02
      • 2019-07-18
      • 2018-07-14
      相关资源
      最近更新 更多