使用Tuple Keys将Pandas Dataframe转换为Dictionary用于三元图

时间:2018-05-23 10:17:27

标签: python pandas dictionary tuples

我正在使用python-ternary

绘制三元图

我的数据是在pandas数据框中。我需要将它转换为字典映射(i,j)到float作为三元组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 个答案:

答案 0 :(得分:3)

set_index使用to_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}