【问题标题】:How to write a Dictionary to Excel in Python如何在 Python 中将字典写入 Excel
【发布时间】:2016-03-14 23:22:08
【问题描述】:

我在 python 中有以下字典,表示从 - 到距离矩阵。

graph = {'A':{'A':0,'B':6,'C':INF,'D':6,'E':7},

         'B':{'A':INF,'B':0,'C':5,'D':INF,'E':INF},

         'C':{'A':INF,'B':INF,'C':0,'D':9,'E':3},

         'D':{'A':INF,'B':INF,'C':9,'D':0,'E':7},

         'E':{'A':INF,'B':4,'C':INF,'D':INF,'E':0}

         }

是否可以将此矩阵输出到 excel 或 csv 文件中,使其具有以下格式?我已经研究过使用 csv.writer 和 csv.DictWriter 但无法产生所需的输出。

【问题讨论】:

    标签: python excel csv dictionary


    【解决方案1】:

    您可以从该字典创建一个 pandas 数据框,然后保存到 CSV 或 Excel:

    import pandas as pd
    df = pd.DataFrame(graph).T  # transpose to look just like the sheet above
    df.to_csv('file.csv')
    df.to_excel('file.xls')
    

    【讨论】:

    • 完美运行 谢谢!让我更进一步。给定一组数据帧对,是否有可能从数据帧中求和它们的相应值?例如,如果我有 (A,E)、(A,F) 和 (B,D) 对,我想返回它们的值的总和 (6+7+5) = 18
    • 当然,使用给定的对列表,即:pairs = [('A', 'E'), ('A', 'F'), ('B', 'D')] 你可以做到sum(df.ix[pair] for pair in pairs)
    【解决方案2】:

    可能不是最小的结果,但 pandas 可以很好地解决这个问题(如果你正在做任何类型的数据分析,我强烈推荐 pandas!)。

    您的数据已经是完美的格式,可以导入数据框

    INF = 'INF'
    graph = {'A':{'A':0,'B':6,'C':INF,'D':6,'E':7},
    
             'B':{'A':INF,'B':0,'C':5,'D':INF,'E':INF},
    
             'C':{'A':INF,'B':INF,'C':0,'D':9,'E':3},
    
             'D':{'A':INF,'B':INF,'C':9,'D':0,'E':7},
    
             'E':{'A':INF,'B':4,'C':INF,'D':INF,'E':0}
             }
    import pandas as pd
    pd.DataFrame(graph).to_csv('OUTPUT.csv')
    

    但是你想要的输出是这个转置的,所以:

    pd.DataFrame(graph).T.to_csv('OUTPUT.csv')
    

    其中 T 返回 Dataframe 的转置。

    【讨论】:

      猜你喜欢
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 2017-09-06
      • 2021-05-15
      • 2017-09-26
      • 1970-01-01
      相关资源
      最近更新 更多