在Python Flask中将Pandas数据框作为JSONP响应返回

9
我希望在Flask中以JSONP响应的形式返回数据。这些数据来自一个Pandas数据框,并且我可以使用以下代码将其作为JSON返回:
json_data = dataframe.to_json(orient='values')
return json_data

运行正常,我得到了数据,看起来像这样:

[[1487310600000,1038,1042,1038,1038,-2.243,6.8933],[1487310900000,1042,1042,1038,1038,-1.3626,4.3058],[1487311200000,1042,1042,1038,1038,-1.4631,17.8684]]

但我需要将其转换为JSONP格式,因此我使用以下代码:

from flask_jsonpify import jsonpify
json_data = dataframe.to_json(orient='values')
return jsonpify(json_data)

它给我数据,但带有双引号:

"[[1487310600000,1038,1042,1038,1038,-2.243,6.8933],[1487310900000,1042,1042,1038,1038,-1.3626,4.3058],[1487311200000,1042,1042,1038,1038,-1.4631,17.8684]]"

如何在 Flask 中获取没有双引号的 JSONP 响应?

非常感谢。


1
不要先调用 to_json() 方法。jsonpify() 函数期望传入的参数是一个字典或列表,并将其转换为带有 JSONP 包装器的 JSON 格式。 - Barmar
如果我执行 jsonpify(dataframe),会出现错误 is not JSON serializable - sunwarr10r
3
将数据框转换为列表 - Barmar
2个回答

13

这是我将Pandas数据框转换为JSONP并在Flask中返回的解决方案:

from flask_jsonpify import jsonpify
df_list = df.values.tolist()
JSONP_data = jsonpify(df_list)
return JSONP_data

根据您需要转换的数据框的方式,您可能需要以不同的方式创建列表。例如像这样:

df_list = merged.values.T.tolist() 

或者像这样:

df_list = list(df.values.flatten())

感谢用户@Barmer


2
使用这种方法,数据框的列将成为键,数据框的系列将成为值。
data_dict = dict()
for col in dataframe.columns:
    data_dict[col] = dataframe[col].values.totlist()
return jsonify(data_dict)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,