python - Pandas 按字典列表分组
问题描述
我有如下数据,我正在尝试将数据分组为日期名称和小时。
[
{
"avg": 52,
"hour": 9,
"dayname": "Friday"
},
{
"avg": 1,
"hour": 10,
"dayname": "Friday"
},
{
"avg": 12,
"hour": 11,
"dayname": "Friday"
},
{
"avg": 3,
"hour": 12,
"dayname": "Friday"
},
{
"avg": 12,
"hour": 09,
"dayname": "Saturday"
},
{
"avg": 30,
"hour": 10,
"dayname": "Saturday"
},
{
"avg": 66,
"hour": 11,
"dayname": "Saturday"
},
{
"avg": 45,
"hour": 12,
"dayname": "Saturday"
}
]
我想要最终的OP:
hour Friday Saturday
9 52 12
10 1 30
11 12 16
12 3 45
这是我尝试过的代码:
cur = mysql.connection.cursor()
sql = "select avg(value) avg, hour, dayname from table;"
cur.execute(sql)
row_headers = [x[0] for x in cur.description] #this will extract row headers
rv = cur.fetchall()
json_result = []
for result in rv:
json_result.append(dict(zip(row_headers, result)))
# resultfromdb= json.dumps(json_result)
finalresult = #how to get the expected op
return finalresult
从那里如何使用熊猫进行分组并获得最终结果?
解决方案
您可以将字典列表直接输入pandas
然后操作:
df = pd.DataFrame(lst)
res = df.pivot_table(index='hour', columns='dayname', values='avg', aggfunc=np.sum)\
.reset_index()
res.columns.name = ''
print(res)
hour Friday Saturday
0 9 52 12
1 10 1 30
2 11 12 66
3 12 3 45
推荐阅读
- docker - docker stack - 提交 docker-compose.yml 的更改
- markdown - Jekyll kramdown 不支持参考链接
- android - 在 Room DB 上插入不会触发活动上的观察者
- r - 如何显示每个时期的结果?
- ios - 如何更改 frameLayoutGuide.layoutFrame
- html - 创建 React 应用程序以具有多个角色
- matlab - 在排除某些行的矩阵的列中查找最大元素
- python - 如何提高 scipy.sparse.csgraph.breadth_first_order 性能?
- python - 熊猫应用样式并更改单元格的内容
- python-3.x - 如何配置 tkinter 按钮看起来更现代