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

时间:2017-02-17 23:27:02

标签: python json pandas flask jsonp

我希望在JSONP中将数据作为Flask响应返回。

数据来自Pandas dataframe,我可以使用以下行将其作为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]]"

如果没有双引号,如何在JSONP中获得Flask响应? 非常感谢提前。

2 个答案:

答案 0 :(得分:7)

这是我将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

答案 1 :(得分:0)

使用此方法,数据框的列将是键,数据框的系列将是值。

data_dict = dict()
for col in dataframe.columns:
    data_dict[col] = dataframe[col].values.totlist()
return jsonify(data_dict)