python - 如何将非对称成对距离矩阵转换为字典?

标签 python pandas dataframe dictionary

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

<表类=“s-表”> <标题> 城市1 城市2 城市3 <正文> 城市1 0 2.2 3.1 城市2 2.1 0 4.0 城市3 3.2 4.3 0

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

{('城市1','城市1') : 0, ('城市1','城市2') : 2.1, ('城市1','城市3') : 3.2, ...}

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

最佳答案

让我们尝试使用 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}

关于python - 如何将非对称成对距离矩阵转换为字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67472369/

相关文章:

python - 使用 "long"(包装)在 jupyter notebook 中显示 "foldover"pandas 数据框?

python - Pandas - 根据索引而不是索引替换值

python - 我将如何选择 pandas 中与字符串列表匹配的行,而不仅仅是一个特定的字符串?

python - 根据要求在 Python/Matplotlib 中为热图着色

python - Django 模型的类型注释

python - 屏幕截图中低分辨率文本的 OCR

r - 从条件开始按组向后填充值

dataframe - 如何使用Dask Pivot_table?

python - 如何使用 Boto3 get_query_results 方法从 AWS Athena 创建 Dataframe

python - 元组元素到 python 中的数据框列