DataFrame 类型的对象不是 JSON 可序列化的

Object of type DataFrame is not JSON serializable

一直在尝试通过 request.post(url, json=df) 请求 df,但它引发了同样的错误。已尝试 to_json,但会引发多个错误。

import requests
# X_eval is after preprocessing and train split
url = 'http://127.0.0.1:5000/'
r = requests.post(url, json = X_eval)
r.text.strip()

#flask_code
import pickle
from flask import Flask, request, jsonify
from model_files.model import predict_house_price

app = Flask('House_prediction')

@app.route('/', methods=['POST'])
def predict():
    house_config = request.get_json()

    with open('./model_files/model.bin', 'rb') as f_in:
        model = pickle.load(f_in)
         f_in.close()

    predictions = predict_house_price(house_config, model)
    response = { 'house_price_prediction': list(predictions)}
    return jsonify(response)

if __name__ == '__main__':
    app.run(debug=True)

您可以使用 json.loads()。通过 df.to_json() 将 DataFrame 转换为 json 并将其包装在 json.loads() 中,我成功发送了 post 请求。例如,

requests.post('http://127.0.0.1:5000/api/organizations', json=json.loads(df.to_json()))

这是一个完整的例子,

import json
import pandas as pd
import requests
d = {'col1': ['a','b'], 'col2': ['a','b']}
df = pd.DataFrame(data=d)
requests.post('http://127.0.0.1:5000/api/organizations', json=json.loads(df.to_json()))