[英]Flattened and Convert list of Nested Dictionary to Pandas Dataframe
[英]From Nested dictionary to a flattened Dataframe
我在這里做了一個噩夢。 我嘗試了 flatten_dict、MutableMapping、導出到 json 嘗試讀取和清理等。沒有任何效果。
所以,我有 720 行這樣的:
"{'utilidad neta': 954700.2, 'gastos operacionales': {'total': 32505631.93, 'gastos administrativos': 24734891.6, 'provisión y castigo de cartera': 0.0, 'gastos de venta': 7770740.33, 'costos operativos': 0.0}, 'costo de ventas': {'costo servicios': 0.0, 'total': 20084030.38, 'costo mercancÃ\xada vendida': 20084030.38}, 'utilidad antes de impuestos': 954700.2, 'otros egresos': {'total': 5026105.03, 'pérdida en venta de activos': 0.0, 'financieros': 5026105.03, 'diferencia en cambio': 0.0, 'donaciones': 0.0}, 'impuestos': {'total': 0.0, 'impuestos sobre la renta': 0.0, 'cree': 0.0}, 'utilidad operacional': -2846492.31, 'ingresos operacionales': {'total': 49743170.0, 'devoluciones en ventas': {'total': -552065.0, 'devoluciones no gravadas': 0.0, 'devoluciones gravadas': -552065.0}, 'ventas y servicios': {'total': 50295235.0, 'ventas no gravadas': 342438.0, 'ventas gravadas': 49952797.0, 'servicios': 0.0}}, 'utilidad bruta': 29659139.62, 'ingresos no operacionales': {'total': 8827297.54, 'financieros': -8.46, 'diferencia en cambio': 0.0, 'otros ingresos': {'otros ingresos - (ganancia en venta de activos)': 0.0, 'total': 8827306.0, 'otros ingresos - reintegro de costos y gastos': 8827306.0}}}"
"{'utilidad neta': -48227366.15, 'gastos operacionales': {'total': 39553354.0, 'gastos administrativos': 39553354.0, 'provisión y castigo de cartera': 0.0, 'gastos de venta': 0.0}, 'costo de ventas': {'costo servicios': 0.0, 'total': 45724691.15, 'costo mercancÃ\xada vendida': 45724691.15}, 'utilidad antes de impuestos': -48227366.15, 'otros egresos': {'total': 0.0, 'pérdida en venta de activos': 0.0, 'financieros': 0.0, 'diferencia en cambio': 0.0, 'donaciones': 0.0}, 'impuestos': {'total': 0.0, 'impuestos sobre la renta': 0.0, 'cree': 0.0}, 'utilidad operacional': -23738621.15, 'ingresos operacionales': {'total': 61539424.0, 'devoluciones en ventas': -4040000.0, 'ventas y servicios': 65579424.0}, 'utilidad bruta': 15814732.85, 'ingresos no operacionales': {'total': -24488745.0, 'otros ingresos (ganancia en venta de activos)': 0.0, 'financieros': -24488745.0, 'diferencia en cambio': 0.0}}"
這個想法是為建模構建一個數據框,因此每個項目都必須創建一個名稱與嵌套字典的父級相關的列。
輸出,它必須與此類似:
Gastos opacionales_total | Gastos opacionales_gastos administrativos |
---|---|
32505631.93 | 24734891.6 |
39553354 | 39553354 |
如您所見,問題在於並非所有行都具有相同的數據。 因此,對於每個主題,它都需要創建一個列。
請給我一些想法來解決這個問題。
使用json_normalize
並通過literal_eval
將值轉換為字典:
import ast
df = pd.json_normalize(df['col'].apply(ast.literal_eval))
print (df)
utilidad neta utilidad antes de impuestos utilidad operacional \
0 954700.20 954700.20 -2846492.31
1 -48227366.15 -48227366.15 -23738621.15
utilidad bruta gastos operacionales.total \
0 29659139.62 32505631.93
1 15814732.85 39553354.00
gastos operacionales.gastos administrativos \
0 24734891.6
1 39553354.0
gastos operacionales.provisión y castigo de cartera \
0 0.0
1 0.0
gastos operacionales.gastos de venta \
0 7770740.33
1 0.00
gastos operacionales.costos operativos costo de ventas.costo servicios \
0 0.0 0.0
1 NaN 0.0
costo de ventas.total costo de ventas.costo mercancÃa vendida \
0 20084030.38 20084030.38
1 45724691.15 45724691.15
otros egresos.total otros egresos.pérdida en venta de activos \
0 5026105.03 0.0
1 0.00 0.0
otros egresos.financieros otros egresos.diferencia en cambio \
0 5026105.03 0.0
1 0.00 0.0
otros egresos.donaciones impuestos.total \
0 0.0 0.0
1 0.0 0.0
impuestos.impuestos sobre la renta impuestos.cree \
0 0.0 0.0
1 0.0 0.0
ingresos operacionales.total \
0 49743170.0
1 61539424.0
ingresos operacionales.devoluciones en ventas.total \
0 -552065.0
1 NaN
ingresos operacionales.devoluciones en ventas.devoluciones no gravadas \
0 0.0
1 NaN
ingresos operacionales.devoluciones en ventas.devoluciones gravadas \
0 -552065.0
1 NaN
ingresos operacionales.ventas y servicios.total \
0 50295235.0
1 NaN
ingresos operacionales.ventas y servicios.ventas no gravadas \
0 342438.0
1 NaN
ingresos operacionales.ventas y servicios.ventas gravadas \
0 49952797.0
1 NaN
ingresos operacionales.ventas y servicios.servicios \
0 0.0
1 NaN
ingresos no operacionales.total ingresos no operacionales.financieros \
0 8827297.54 -8.46
1 -24488745.00 -24488745.00
ingresos no operacionales.diferencia en cambio \
0 0.0
1 0.0
ingresos no operacionales.otros ingresos.otros ingresos - (ganancia en venta de activos) \
0 0.0
1 NaN
ingresos no operacionales.otros ingresos.total \
0 8827306.0
1 NaN
ingresos no operacionales.otros ingresos.otros ingresos - reintegro de costos y gastos \
0 8827306.0
1 NaN
ingresos operacionales.devoluciones en ventas \
0 NaN
1 -4040000.0
ingresos operacionales.ventas y servicios \
0 NaN
1 65579424.0
ingresos no operacionales.otros ingresos (ganancia en venta de activos)
0 NaN
1 0.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.