如何用python形成嵌套式的json数据?

问题描述

数据库的字段:

uid,  year,   quarter,   score
 1    2018    第一季度     4
 1    2018    第一季度     3
 1    2018    第三季度     3
 2    2017    第二季度     5

积分是按季度统计的,所以一个季度的积分需要求和。
第一层的key是uid,第二层的key是年份,第三层的key是季度,value是积分和

s={1:{2018:{1:7,3:3}},2:{2017:{2:5}}}

问题出现的环境背景及自己尝试过哪些方法

我用json,但是操作起来有难度。

用二维数组
a=[[1,2018,1,5],[1,2018,1,4],[2,2017,1,7],[2,2018,2,7]]

a[i][0]==a[j][0]&&a[i][1]==a[j][1]&&a[i][2]==a[j][2]

ss=sum(a[i][3])


操作二维数组

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

形成这种三层嵌套的json,或其他结构严整的格式。

阅读 3k
1 个回答

不试一下pandas么?

In [1]: import pandas as pd

In [2]: df = pd.DataFrame({'uid':[1,1,1,2],
   ...:     'year':[2018,2018,2018,2017],
   ...:     'quarter':['第一季度','第一季度','第三季度','第二季度'],
   ...:     'score':[4,3,3,5]})
   ...:

In [3]: df
Out[3]:
  quarter  score  uid  year
0    第一季度      4    1  2018
1    第一季度      3    1  2018
2    第三季度      3    1  2018
3    第二季度      5    2  2017

至于要对相同季度,uid和年份汇总分数。可以用groupby的方法

In [4]: df.groupby(['quarter','uid','year']).sum()
Out[4]:
                  
quarter   uid  year  score
第一季度    1   2018      7
第三季度    1   2018      3
第二季度    2   2017      5
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题