我用熊猫制作了这行代码:
sqltable2 = sqltable.groupby(['Grupo_Resolutor', 'Sub_Estado']).size()
用这个输出
Grupo_Resolutor Sub_Estado
ANALISIS DE CREDITO CANCELADO 2
MAL ESCALADO 22
NO PROCEDE 1120
NO PROCEDE RECONEXION 41
SOLUCIONADO 4446
SOLUCIONADO POR MASIVO 11898
COBRANZAS MAL ESCALADO 2
NO PROCEDE 203
NO PROCEDE COBRO 39
NO PROCEDE POR MI PUNTO 21758
NO PROCEDE RECONEXION 32
SOLUCIONADO 533
SOLUCIONADO POR MIPUNTO 11966
我希望将该groupby对象解析为json但是当我这样做时:(我需要它带有记录,因为它用于amcharts)
sqltable2.to_json(orient = 'records')
我有这个输出:
[2,22,1120,41,4446,11898,2,203,39,21758,32,533,11966]
欲望输出:
[
{
"Grupo Resolutor": "Analisis de Credito",
"CANCELADO": 2,
"MAL ESCALADO": 22,
"NO PROCEDE": 1120,
"NO PROCEDE RECONEXION": 2,
"SOLUCIONADO": 22,
"SOLUCIONADO POR MASIVO": 1120
},
{
"Grupo Resolutor": "Cobranzas",
"MAL ESCALADO": "2",
"NO PROCEDE": 203,
"NO PROCEDE COBRO": 39,
"NO PROCEDE POR MI PUNTO": 21758,
"NO PROCEDE RECONEXION": 32,
"SOLUCIONADO": 533,
"SOLUCIONADO POR MIPUNTO": 11966
}
]
等等每个'Grupo_Resolutor'(还有更多,但我不能在这个问题上放太多代码)
有任何想法吗?
首先使用DataFrame
将第一级值添加到append
:
a = sqltable2.index.levels[0]
df = sqltable2.append(pd.Series(a, index = [a,['Grupo_Resolutor'] * len(a)]))
print (df)
Grupo_Resolutor Sub_Estado
ANALISIS DE CREDITO CANCELADO 2
MAL ESCALADO 22
NO PROCEDE 1120
NO PROCEDE RECONEXION 41
OLUCIONADO 4446
SOLUCIONADO POR MASIVO 11898
COBRANZAS MAL ESCALADO 2
NO PROCEDE 203
NO PROCEDE COBRO 39
NO PROCEDE POR MI PUNTO 21758
NO PROCEDE RECONEXION 32
SOLUCIONADO 533
SOLUCIONADO POR MIPUNTO 11966
ANALISIS DE CREDITO Grupo_Resolutor ANALISIS DE CREDITO
COBRANZAS Grupo_Resolutor COBRANZAS
然后由dictionary
创建list comprehension
:
d = [v.reset_index(level=0, drop=True).to_dict() for k,v in df.groupby(level=0)]
print (d)
[{
'Grupo_Resolutor': 'ANALISIS DE CREDITO',
'NO PROCEDE': 1120,
'SOLUCIONADO POR MASIVO': 11898,
'MAL ESCALADO': 22,
'NO PROCEDE RECONEXION': 41,
'OLUCIONADO': 4446,
'CANCELADO': 2
}, {
'NO PROCEDE COBRO': 39,
'SOLUCIONADO POR MIPUNTO': 11966,
'NO PROCEDE': 203,
'SOLUCIONADO': 533,
'NO PROCEDE POR MI PUNTO': 21758,
'NO PROCEDE RECONEXION': 32,
'Grupo_Resolutor': 'COBRANZAS',
'MAL ESCALADO': 2
}]
最后写dict
到json
文件使用json.dump
:
import json
with open('result.json', 'w') as fp:
json.dump(d, fp)
也有可能直接写入json
,但获取null
以获取某些列中缺少的类别的值:
j = df.unstack().to_json(orient='records')
print (j)
[{
"CANCELADO": 2,
"Grupo_Resolutor": "ANALISIS DE CREDITO",
"MAL ESCALADO": 22,
"NO PROCEDE": 1120,
"NO PROCEDE COBRO": null,
"NO PROCEDE POR MI PUNTO": null,
"NO PROCEDE RECONEXION": 41,
"OLUCIONADO": 4446,
"SOLUCIONADO": null,
"SOLUCIONADO POR MASIVO": 11898,
"SOLUCIONADO POR MIPUNTO": null
}, {
"CANCELADO": null,
"Grupo_Resolutor": "COBRANZAS",
"MAL ESCALADO": 2,
"NO PROCEDE": 203,
"NO PROCEDE COBRO": 39,
"NO PROCEDE POR MI PUNTO": 21758,
"NO PROCEDE RECONEXION": 32,
"OLUCIONADO": null,
"SOLUCIONADO": 533,
"SOLUCIONADO POR MASIVO": null,
"SOLUCIONADO POR MIPUNTO": 11966
}]