#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