Конвертировать Pandas Dataframe в словарь с ключами кортежей для троичного графика - PullRequest
0 голосов
/ 23 мая 2018

Я строю троичные диаграммы с python-троичным

Мои данные находятся в кадре данных панд.Мне нужно преобразовать его в отображение словаря (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']

Пожалуйста, кто-нибудь может мне помочь сбыстрее или более питонский способ сделать это?

1 Ответ

0 голосов
/ 23 мая 2018

Используйте set_index с to_dict:

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

Альтернативно с zip и dict 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}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...