2017-02-17 1 views
2

Je souhaite renvoyer des données sous la forme JSONP en Flask.Renvoyer la trame de données Pandas en tant que réponse JSONP dans Python Flask

Les données proviennent d'un Pandas dataframe et je peux le retourner comme JSON avec la ligne suivante:

json_data = dataframe.to_json(orient='values') 
return json_data 

fonctionne très bien et je reçois les données, ce qui ressemble à ceci:

[[ 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]]

Mais j'ai besoin comme JSONP, donc j'utiliser le code suivant:

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

Et il me donne les données, mais avec des guillemets doubles:

« [[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]] »

Comment puis-je obtenir la réponse JSONP en Flask sans double tes? Merci beaucoup d'avance.

+0

Ne pas appeler 'to_json()' d'abord. 'jsonpify()' s'attend à ce que son argument soit un dictionnaire ou une liste, et il le convertit en JSON avec le wrapper JSONP. – Barmar

+0

Si je fais 'jsonpify (dataframe)' j'obtiens une erreur 'n'est pas sérialisable JSON' – saitam

+1

[convertir dataframe à la liste] (http://stackoverflow.com/questions/15112234/converting-dataframe-into-a-list) – Barmar

Répondre

2

C'est ma solution pour convertir un Pandas dataframe à jsonp un retour dans Flask:

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

Selon la façon dont vous avez besoin du dataframe converti, vous devrez peut-être faire la liste d'une autre façon que moi , par exemple comme celui-ci df_list = merged.values.T.tolist() ou comme celui-ci df_list = list(df.values.flatten()) etc.

Merci va à l'utilisateur @Barmer