将 pandas 数据帧转换为 Json 对象数组

ana*_*nas 3 json dataframe flask pandas flask-sqlalchemy

我正在使用 Flask 和 Angular 构建一个机器学习应用程序。我正在我的 pyhton 后端检索一个 mysql 表,我想使用 pandas dataframe 进行一些过滤方法。我通过将 Json 数组转换为 pandas 数据帧轻松完成了这部分。但是当我尝试通过将数据帧转换为 json 对象数组来返回数据帧时,它将如下所示。

from flask import request
from flask_restful import Resource
from Model import db, EmployeeTaskSummary, EmployeeTaskSummarySchema
import json

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

employee_task_summary_schemas = EmployeeTaskSummarySchema(many=True)
employee_task_summary_schema = EmployeeTaskSummarySchema()

class EmployeeTaskSummaryResource(Resource):
    def get(self):
       employee_task_summary = EmployeeTaskSummary.query.all()
       employee_task_summary = 
       employee_task_summary_schemas.dump(employee_task_summary).data
       df=pd.DataFrame(employee_task_summary)
       return df.head(5).to_json(orient='records')
Run Code Online (Sandbox Code Playgroud)

那么输出 json Arry 将是:-

"[{\"closed_issues\":0,\"created_issues\":0,\"designation\":\"STL\",\"gitlab_additions\":0,\"gitlab_deletions\":0,\"inprogress_issues\":0,\"month\":1,\"name\":\"Madawa Jeev.\",\"onhold_issues\":0,\"open_issues\":0,\"project_name\":\"DSN\",\"re_opened_issues\":0,\"resolved_issues\":0,\"timelogs\":0,\"week\":1,\"year\":2019},{\"closed_issues\":0,\"created_issues\":0,\"designation\":\"STL\",\"gitlab_additions\":0,\"gitlab_deletions\":0,\"inprogress_issues\":0,\"month\":1,\"name\":\"Madawa Jeev.\",\"onhold_issues\":0,\"open_issues\":0,\"project_name\":\"DSN\",\"re_opened_issues\":0,\"resolved_issues\":0,\"timelogs\":0,\"week\":2,\"year\":2019},{\"closed_issues\":0,\"created_issues\":0,\"designation\":\"STL\",\"gitlab_additions\":0,\"gitlab_deletions\":0,\"inprogress_issues\":0,\"month\":1,\"name\":\"Madawa Jeev.\",\"onhold_issues\":0,\"open_issues\":7,\"project_name\":\"DSN\",\"re_opened_issues\":0,\"resolved_issues\":0,\"timelogs\":0,\"week\":3,\"year\":2019},{\"closed_issues\":0,\"created_issues\":0,\"designation\":\"STL\",\"gitlab_additions\":0,\"gitlab_deletions\":0,\"inprogress_issues\":0,\"month\":1,\"name\":\"Madawa Jeev.\",\"onhold_issues\":0,\"open_issues\":0,\"project_name\":\"DSN\",\"re_opened_issues\":0,\"resolved_issues\":0,\"timelogs\":0,\"week\":4,\"year\":2019},{\"closed_issues\":0,\"created_issues\":0,\"designation\":\"STL\",\"gitlab_additions\":0,\"gitlab_deletions\":0,\"inprogress_issues\":0,\"month\":1,\"name\":\"Madawa Jeev.\",\"onhold_issues\":0,\"open_issues\":18,\"project_name\":\"DSN\",\"re_opened_issues\":0,\"resolved_issues\":0,\"timelogs\":0,\"week\":5,\"year\":2019}]"
Run Code Online (Sandbox Code Playgroud)

我不明白输出中出现这个“\”符号。我需要这种输出。(这是随机样本)

[
{
    "id": 1,
    "designation": "SE",
    "year": 2019,
    "week": 1,
    "gitlab_additions": 12,
    "gitlab_deletions": 3,
    "name": "abc",
    "timelog": 1234,
    "month": 1
},
{
    "id": 2,
    "designation": "SSE",
    "year": 2019,
    "week": 1,
    "gitlab_additions": 21,
    "gitlab_deletions": 2,
    "name": "asd",
    "timelog": 2342,
    "month": 1
},
Run Code Online (Sandbox Code Playgroud)

如果可以的话请帮助我。谢谢

taw*_*eel 5

用于json.loads将字符串转换为json

import json
res = json.loads(df.to_json(orient='records'))
print(res)
Run Code Online (Sandbox Code Playgroud)
[
{
    "id": 1,
    "designation": "SE",
    "year": 2019,
    "week": 1,
    "gitlab_additions": 12,
    "gitlab_deletions": 3,
    "name": "abc",
    "timelog": 1234,
    "month": 1
},
{
    "id": 2,
    "designation": "SSE",
    "year": 2019,
    "week": 1,
    "gitlab_additions": 21,
    "gitlab_deletions": 2,
    "name": "asd",
    "timelog": 2342,
    "month": 1
}]
Run Code Online (Sandbox Code Playgroud)

第二种解决方案

只需to_dict()orient ='records'

res = df.to_dict(orient='records')
print(res)
Run Code Online (Sandbox Code Playgroud)
[
{
    "id": 1,
    "designation": "SE",
    "year": 2019,
    "week": 1,
    "gitlab_additions": 12,
    "gitlab_deletions": 3,
    "name": "abc",
    "timelog": 1234,
    "month": 1
},
{
    "id": 2,
    "designation": "SSE",
    "year": 2019,
    "week": 1,
    "gitlab_additions": 21,
    "gitlab_deletions": 2,
    "name": "asd",
    "timelog": 2342,
    "month": 1
}]
Run Code Online (Sandbox Code Playgroud)