Преобразование кадра данных в словарь - PullRequest
1 голос
/ 15 марта 2020

У меня есть Dataframe в формате CSV, как показано на рисунке.

enter image description here

Я хочу преобразовать его в словарь, чтобы строки были ключевыми и значения также соответствуют строке.

для этого я использовал код: -

import pandas as pd
from ast import literal_eval

match_pairs = pd.read_csv('data_d.csv',usecols=['Object','Pairs'])
match_pairs['Pairs'] = match_pairs['Pairs'].apply(literal_eval)
dict = match_pairs.transpose()
dict.to_dict()
print(dict['a'])

Когда я импортировал фрейм данных в match_pairs, столбец Pairs был импортирован как строка, а не как список. поэтому я использовал literal_eval() для получения структуры данных.

Далее, .to_dict() fun c преобразует столбец как ключ. Поэтому я транспонировал данные и затем использовал .to_dict() fun c.

, но, к сожалению, я не могу получить пары ключ-значение, как мне требуется.
Я хотел, чтобы для print(dict['a']) я получил значение ['d','e','f'].

Пожалуйста, помогите мне с этой проблемой.

1 Ответ

2 голосов
/ 15 марта 2020

Сначала не используйте dict для имени переменной, потому что buildten, python кодовое слово.

Создайте Series, а затем используйте Series.to_dict:

match_pairs = pd.read_csv('data_d.csv',usecols=['Object','Pairs'])
match_pairs['Pairs'] = match_pairs['Pairs'].apply(literal_eval)

d = match_pairs.set_index('Object')['Pairs'].to_dict()

Или используйте zip с dict:

#reset builtin if used like variable
#import builtins
#dict = builtins.dict
d = dict(zip(match_pairs['Object'], match_pairs['Pairs']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...