我有一个距离矩阵,我想将其转换为具有两个键和一个值的字典。我的 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 函数,但我无法弄清楚如何告诉此函数不仅使用列名作为键。提前致谢。
答案 0 :(得分:3)
让我们尝试 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}