Transfer data format

轉換資料格式

DataFrame to list

result.values.tolist()

只有一欄位時,直接轉list會出現兩層array的狀況,只要先取出再轉即可。

list_product = df['product'].values.tolist()

參考: https://datatofish.com/convert-pandas-dataframe-to-list/

DataFrame to JSON

import json

# 轉為response常用的json格式
json.loads(data.to_json(orient="records", force_ascii=False))

參數 - orient

指定轉出的格式。

  • split(默認):按欄名拆分。

  • records:轉換為記錄(JSON 文檔)。

  • index:轉換為具有索引值的對象(鍵用作索引)。

  • columns:轉換為具有列標籤的對象(鍵用作標籤)。

  • values:只轉換值。

參考:(看「二、DataFrame转为json」)

https://blog.csdn.net/qq_41780234/article/details/84990551

說明文件:https://www.cnblogs.com/a00ium/p/14875138.html

ERR

ValueError: Out of range float values are not JSON compliant

翻譯:超出範圍的浮點值不符合 JSON 標準

說明:因data中有「NaN」的值,Dataframe轉JSON時會根據欄位型態處理資料,NaN轉為浮點時就跳錯...

解:先將浮點欄位中NaN的值轉為0

data = data.fillna(0) #對所有資料處理
data['30'] = data['30'].fillna(0) #對特定欄位(30)做處理

JSON to DataFrame

import pandas as pd

# post進來的json轉為DataFrame
pd.DataFrame(data)

ERR

遇上「arrays must all be same length」錯誤,可嘗試指定JSONObject的key行列方式解決。

pd.DataFrame.from_dict(raw_df, orient='index')

from_dict方法參考:https://www.cjavapy.com/article/472/

Last updated