【问题标题】:How to convert an asymmetric pairwise distance matrix to dictionary?如何将不对称的成对距离矩阵转换为字典?
【发布时间】:2021-07-31 23:18:10
【问题描述】:

我有一个距离矩阵,我想将其转换为具有两个键和一个值的字典。我的 csv 文件看起来像这样:

City1 City2 City3
City1 0 2.2 3.1
City2 2.1 0 4.0
City3 3.2 4.3 0

我使用 pd.read_csv 将我的 csv 文件作为 pandas 数据框导入,现在我想将此数据框转换为字典,该字典应使用第一列和第一行作为键,其余作为值。比如:

{('City1','City1') : 0, ('City1','City2') : 2.1, ('City1','City3') : 3.2, ...}

我尝试使用 pandas .to_dict 函数,但我无法弄清楚如何告诉该函数不仅使用列名作为键。提前谢谢你。

【问题讨论】:

    标签: python pandas dataframe dictionary


    【解决方案1】:

    让我们试试 stack 然后 to_dict:

    import pandas as pd
    
    df = pd.DataFrame({
        'City1': {'City1': 0, 'City2': 2.1, 'City3': 3.2},
        'City2': {'City1': 2.2, 'City2': 0.0, 'City3': 4.2},
        'City3': {'City1': 3.1, 'City2': 4.0, 'City3': 0},
    })
    
    d = df.stack().to_dict()
    print(d)
    

    df:

           City1  City2  City3
    City1    0.0    2.2    3.1
    City2    2.1    0.0    4.0
    City3    3.2    4.2    0.0
    

    d:

    {('City1', 'City1'): 0.0, ('City1', 'City2'): 2.2, ('City1', 'City3'): 3.1,
     ('City2', 'City1'): 2.1, ('City2', 'City2'): 0.0, ('City2', 'City3'): 4.0,
     ('City3', 'City1'): 3.2, ('City3', 'City2'): 4.2, ('City3', 'City3'): 0.0}
    

    【讨论】:

      猜你喜欢
      • 2016-12-24
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 2023-03-10
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多