Кажется, это простой вопрос, но я застрял из-за того, насколько хитро это дано в документации pandas.DataFrame.to_dict
:
У меня есть следующий игрушечный пример pandas DataFrame с двумя столбцами, причем column2
- это столбец списков:
import pandas as pd
dict1 = {'column1': ['list1', 'list2', 'list3'], 'column2': [[367, 30, 847, 482, 887, 654, 347, 504, 413, 821], [754, 915, 622, 149, 279, 192, 312, 203, 742, 846], [586, 521, 470, 476, 693, 426, 746, 733, 528, 565]]}
df = pd.DataFrame(dict1)
print(df)
column1 column2
0 list1 [367, 30, 847, 482, 887, 654, 347, 504, 413, 821]
1 list2 [754, 915, 622, 149, 279, 192, 312, 203, 742, 846]
2 list3 [586, 521, 470, 476, 693, 426, 746, 733, 528, 565]
Я хотел бы преобразовать этот pandas DataFrame в словарь, причем каждый ключ имеет значение column1
, а значения - column2
.
Это мой предпочтительный вывод:
{'list1': [367, 30, 847, 482, 887, 654, 347, 504, 413, 821],
'list2': [754, 915, 622, 149, 279, 192, 312, 203, 742, 846],
'list3': [586, 521, 470, 476, 693, 426, 746, 733, 528, 565]}
Используя .to_dict()
, это кажется очень сложным.
Если я попытаюсь df.set_index('column1').T.to_dict()
, я получу словарь с именами столбцов в словаре:
{'list1': {'column2': [367, 30, 847, 482, 887, 654, 347, 504, 413, 821]},
'list2': {'column2': [754, 915, 622, 149, 279, 192, 312, 203, 742, 846]},
'list3': {'column2': [586, 521, 470, 476, 693, 426, 746, 733, 528, 565]}}
Если я попытаюсь с to_dict("list")
, я получу следующее:
{'list1': [[367, 30, 847, 482, 887, 654, 347, 504, 413, 821]],
'list2': [[754, 915, 622, 149, 279, 192, 312, 203, 742, 846]],
'list3': [[586, 521, 470, 476, 693, 426, 746, 733, 528, 565]]}
, что неверно, так как теперь значения списков списков, а не единого списка.
Если я попытаюсь to_dict("records")
, вывод на самом деле будет одним списком, а не словарем:
[{'list1': [367, 30, 847, 482, 887, 654, 347, 504, 413, 821],
'list2': [754, 915, 622, 149, 279, 192, 312, 203, 742, 846],
'list3': [586, 521, 470, 476, 693, 426, 746, 733, 528, 565]}]
Есть ли еще одна простая команда для преобразования этого pandas DataFrame в словарь списков? Я чувствую, что что-то упустил.