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()))
一直在尝试通过 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()))