Как раскрыть словарь внутри датафрейма
Необходимо раскрыть в датафрейме колонки posting, items, services, чтобы получился единый датафрейм. Подскажите пожалуйста как правильно действовать в таких ситуациях ?
{'result': {'operations': [{'operation_id': 12228515174,
'operation_type': 'OperationAgentDeliveredToCustomer',
'operation_date': '2023-05-01 00:00:00',
'operation_type_name': 'Доставка покупателю',
'delivery_charge': 0,
'return_delivery_charge': 0,
'accruals_for_sale': 464,
'sale_commission': -41.76,
'amount': 353.72,
'type': 'orders',
'posting': {'delivery_schema': 'FBO',
'order_date': '2023-04-21 08:08:35',
'posting_number': '72171510-0032-1',
'warehouse_id': 20125378182},
'items': [{'name': 'Набор швейных ниток для ручного и машинного шитья 40ЛШ "Ленинградский" 150 м., 30 цветов.',
'sku': 927384251}],
'services': [{'name': 'MarketplaceServiceItemFulfillment', 'price': 0},
{'name': 'MarketplaceServiceItemDelivToCustomer', 'price': -25.52},
{'name': 'MarketplaceServiceItemDirectFlowTrans', 'price': 0},
{'name': 'MarketplaceServiceItemDirectFlowLogistic', 'price': -43}]}
Ответы (1 шт):
Автор решения: strawdog
→ Ссылка
просто примените к словарям pd.Series:
import pandas as pd
d = {"first":[1,2,3,4], "second":[{"A":1, "B":2, "C":3, "D":4}, {"A":11, "B":22, "C":33, "D":44},{"A":111, "D":4444},4]}
df = pd.DataFrame(d)
first second
0 1 {'A': 1, 'B': 2, 'C': 3, 'D': 4}
1 2 {'A': 11, 'B': 22, 'C': 33, 'D': 44}
2 3 {'A': 111, 'D': 4444}
3 4 4
вот так:
df = df.join(df["second"].apply(pd.Series))
first second A B C D 0
0 1 {'A': 1, 'B': 2, 'C': 3, 'D': 4} 1.0 2.0 3.0 4.0 NaN
1 2 {'A': 11, 'B': 22, 'C': 33, 'D': 44} 11.0 22.0 33.0 44.0 NaN
2 3 {'A': 111, 'D': 4444} 111.0 NaN NaN 4444.0 NaN
3 4 4 NaN NaN NaN NaN 4.0

