Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Pandas DataFrame as body of FastAPI's JSONResponse

I have a Pandas DataFrame with several columns and some data that I need to return in a response body from a FastAPI application. Borrowing the DataFrame example from another similar, but different, question:

test_list = [["Joe", 34, "Accounts", 10000], ["Jack", 35, "Chemistry", 20000], ["Jill", 37, "Art", 2000]]
df = pandas.DataFrame(data=test_list, columns=["Name", "Age", "Dept.", "Salary"])

Now if I try to use dataframe.to_json as follows, the returned body is a string with every quote character escaped and is not JSON:

result = df.to_json(orient="records") #creates a json string
return JSONResponse(content = result) 

The above returns something like:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

"[{\"Name:\":\"Joe\", \"Age\":\"34\"},  ...etc"

The following works (in that the returned body is valid JSON) but I don’t like that the response is returned as plain text instead of JSON. Is there a better, more proper way to do this?

result = df.to_json(orient="records") 
return PlainTextResponse(content = result)

>Solution :

Instead of json, convert it to dict which fastapi should be able to handle automatically:

result = df.to_dict('records')
return JSONResponse(content = result) 
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading