使用元组键将 Pandas 数据框转换为字典以进行三元图

Posted

技术标签:

【中文标题】使用元组键将 Pandas 数据框转换为字典以进行三元图【英文标题】:Convert Pandas Dataframe to Dictionary with Tuple Keys for Ternary plot 【发布时间】:2018-11-02 06:55:53 【问题描述】:

我正在用python-ternary绘制三元图

我的数据在熊猫数据框中。我需要将它转换为字典映射 (i, j) 到浮点数,作为三元中heatmap 函数的输入。

我的数据框 (df) 如下所示:

   i  j  value
0  1  2      7
1  3  4      8
2  5  6      9 

我需要制作这样的字典:

(1, 2): 7, (5, 6): 9, (3, 4): 8

我目前的解决方法是非常慢的蛮力循环:

import pandas as pd
df = pd.DataFrame('i': [1, 3, 5], 'j': [2, 4, 6], 'value': [7, 8, 9])
data = dict()

for k in range(0, len(df)):
    data[(df.iloc[k]['i'],df.iloc[k]['j'])] = \
        df.iloc[k]['value']

拜托,有人可以帮助我以更快或更pythonic的方式做到这一点吗?

【问题讨论】:

【参考方案1】:

set_indexto_dict 一起使用:

d = df.set_index(['i','j'])['value'].to_dict()

zipdict comprehension 的替代方案:

d = (a,b):c for a,b,c in zip(df['i'], df['j'], df['value'])

print (d)
(1, 2): 7, (3, 4): 8, (5, 6): 9

【讨论】:

@Charles Maupou - 谢谢。

以上是关于使用元组键将 Pandas 数据框转换为字典以进行三元图的主要内容,如果未能解决你的问题,请参考以下文章

将带有元组键(key1,key2)的字典转换为数据框,当key1是索引并且key2时,值是列

使用元组键从字典创建 MultiIndex pandas DataFrame

将 Pandas 数据框转换为包含 ID 和权重的元组列表

为什么将Python dict转换为元组会返回一组键?

如何将字典元组转换为有组织的数据框?

将嵌套字典转换为 pandas 数据框并绘图