Python словарь списка в Pandas dataframe - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь преобразовать словарь списков (выглядит словарь словаря, но, к сожалению, словарь списков) в кадр данных.Я хочу иметь имена столбцов из списка объектов.До сих пор я нашел способ превратить словарь в фрейм данных, но столбцы не имеют подходящего имени, а значения по-прежнему содержат имена столбцов.

user_dict = {'Category 1': ['att_1: 1', 'att_2:  whatever'],
                  'Category 2': ['att_1 : 23', 'att_2 : another']}

res = pd.DataFrame.from_dict(user_dict, orient='index')
res.columns = [f'SYN{i+1}' for i in res]

Пример вывода:

                att_1 | att_2 

Category_1       1 | whatever

Category_1       23 | another

Я думал об использовании unlist или regex, но я не уверен, где это ввести.Любая помощь высоко ценится!Спасибо

Редактировать: моя попытка unlist закончилась здесь:

pd.DataFrame.from_dict({(i,j): to_dict(unlist(user_dict[i][j])) 
                       for i in user_dict.keys() 
                       for j in user_dict[i].keys()},
                   orient='index')

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете использовать словарное понимание, чтобы реструктурировать свой ввод в словарь словарей.Затем используйте from_dict с orient='index':

user_dict = {'Category 1': ['att_1: 1', 'att_2:  whatever'],
             'Category 2': ['att_1 : 23', 'att_2 : another']}

d = {k: dict(map(str.strip, x.split(':')) for x in v) for k, v in user_dict.items()}

df = pd.DataFrame.from_dict(d, orient='index')

df['att_1'] = pd.to_numeric(df['att_1'])

print(df)

           att_1     att_2
Category 1     1  whatever
Category 2    23   another

Как указано выше, вам нужно будет затем преобразовать серии в числовые значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...