Хранить весь дикт в одном элементе/ячейке фрейма данных Pandas?

#python-3.x #pandas #dataframe #dictionary

Вопрос:

можно ли сохранить сложный дикт в одном элементе фрейма данных Pandas, пожалуйста? А позже заполните всю колонку аналогичными структурированными словарями, пожалуйста?

Мой Мини-Пример

 import pandas as pd
import numpy as np

#create an example dict
dict={}
dict['key1']=np.array([[1, 2, 3], [4, 5, 6]])
dict['key2']=np.array([2])                     
dict['key3']='Mexico'

#create the pd DataFrame
df=pd.DataFrame(index=['0','1'], columns=['A','B'])
df
 

Следующий код

 df[0,'A']=[dict]
df[1,'A']=[dict]
 

терпит неудачу с
Ошибка значения: Длина значений (1) не соответствует длине индекса (2)

На самом деле мой диктант содержит около 20 записей, и я не хочу хранить каждую запись в столбце для одного и того же индекса. Или это будет единственный выход, пожалуйста? Я думал, что смогу создать с помощью Панд какую-нибудь небольшую базу данных.

Спасибо вам за ваш совет.

Ответ №1:

Вы можете использовать .loc для этого:

 df.loc['0','A'] = [5,2,3]
df.loc['1','A'] = [dict]
 

Результат:

                                                    A    B
0                                          [5, 2, 3]  NaN
1  [{'key1': [[1 2 3], [4 5 6]], 'key2': [2], 'ke...  NaN
 

Вы также можете добавлять новые записи (строки):

 df.loc['5','A'] = [{'test':'dummy'}]

                                                   A    B
0                                          [5, 2, 3]  NaN
1  [{'key1': [[1 2 3], [4 5 6]], 'key2': [2], 'ke...  NaN
5                                [{'test': 'dummy'}]  NaN