#python-3.x #pandas
#python-3.x #pandas
Вопрос:
У меня есть словарь, который я хотел бы преобразовать в фрейм данных Pandas. Словарь выглядит так:
{'629195': {'name': 'Sam',
'ID': ['.'],
'feature1': ['C234'],
'feature2': ['A313','G1283'],
'feature3': ['129534','1294'],
'feature4': ['1','3'],
'feature5': [88,99],
'feature6':[11,12],
'score': [9,1,3],
'feature7': ['XXA', 'XXL', 'XXC']},
'629196': {'name': 'Peter',
'ID': ['.'],
'feature1': ['A139'],
'feature2': ['.', '.'],
'feature3': ['.'],
'feature4': ['.'],
'feature5': [0],
'feature6': [],
'score': ['.'],
'feature7': ['.']}}
Ожидаемый результат:
Dictionary — это словарь словарей, где каждый ключ является столбцом в фрейме данных Pandas. Как я могу добиться результата в python? Идеи будут оценены по достоинству.
Ответ №1:
Используйте понимание вложенного словаря для объединения значений в списках и переходите к DataFrame.from_dict
:
d1 = {k:{k1: ','.join(map(str, v1)) if isinstance(v1, list)
else v1
for k1, v1 in v.items()} for k, v in d.items()}
df = pd.DataFrame.from_dict(d1, orient='index')
print (df)
name ID feature1 feature2 feature3 feature4 feature5 feature6
629195 Sam . C234 A313,G1283 129534,1294 1,3 88,99 11,12
629196 Peter . A139 .,. . . 0
score feature7
629195 9,1,3 XXA,XXL,XXC
629196 . .
Для второго Reg_ID
столбца используйте:
df.insert(1, 'Reg_ID', df.index)
df = df.reset_index(drop=True)
print (df)
name Reg_ID ID feature1 feature2 feature3 feature4 feature5
0 Sam 629195 . C234 A313,G1283 129534,1294 1,3 88,99
1 Peter 629196 . A139 .,. . . 0
feature6 score feature7
0 11,12 9,1,3 XXA,XXL,XXC
1 . .