Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

103
Visualizações
Pasar un NaN de Python a través de Solicitud a Javacscript

Tengo una matriz de pandas con np.NaN que convierto en un diccionario para JSON

json_data = {"freq" : list(df["Data"])}

Me preparo para cargar en una página web a través del matraz jsonify

 @dashboard.route('/command', methods = ['GET', 'POST']) def command(): [...] return jsonify(json_data)

y por el lado de javascript me preparo para leerlo.

 $.ajax({ url: '/dashboard/command', type: 'POST', data: data, contentType: 'application/json; charset=utf-8', dataType: 'json', success: function(msg) { if (!msg.error) { updatePlot(msg); } else { alert(msg.error); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("There has been an error retrieving your data: \n\n" + errorThrown); }, complete: function() { $("#update-plot").prop('disabled', false); // Re-enable button $("#update-plot-loading").addClass('invisible'); // Hide loading animation }

Y ahí es donde muere si cargo esa página web. Dice que tiene un token "N" incorrecto en el json. Si reemplazo los NaN antes de intentar enviar, por ejemplo

 df["Data"].replace(np.NaN, -999.999)

y todo está bien y el javascript puede continuar. Soy consciente de que los NaN deberían ser "nulo" en el lado de javascript, así que lo que hago en este momento (ugh) es convertir los -999.999 en "nulo" ... Pero Dios, ¿no debería haber una manera? enviar los datos que faltan directamente?

¿Alguna sugerencia? Probé muchas combinaciones de NaN, "NaN", Ninguno, etc. Pero tal vez me perdí una. Revisé la salida de jsonify en Python y parece ser una respuesta válida para enviar.

gracias, t

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Ajá. Progreso, algo así. Al menos en el lado de Flask, tal vez no en Ajax. Considere un Pandas con algo de np.Nan en él ... Conviértalo en un dictado o lo que sea y luego llame a render_template

 s = render_template('dashboard/dashboard_horizontal.html', average_data = average_data)

Aquí es donde se hace el daño... pero se puede arreglar con

 s = s.replace("nan", "NaN") #this is dumb but works!!

Un problema relacionado ocurre con false en json. Cuando lo lees en Python, el analizador lo convierte convenientemente en False . Excepto que ahora creó un problema en el lado de Javascript, pero también se puede solucionar de la misma manera.

 s = s.replace("False", "false") #this is dumb too

No sé si hay algunas palabras clave que podrían pasarse a render_template para hacer esto automáticamente.

about 4 years ago · Juan Pablo Isaza Relatório

0

Ok, también tengo una solución Ajax para NaN, que es la idea de JSON5 que se explica aquí: Cómo analizar la cadena JSON que contiene "NaN" en Node.js. Específicamente, no use dataType json, vaya con 'texto' y realice el análisis a mano.

 $.ajax({ url: '/dashboard/command', type: 'POST', data: data, contentType: 'application/json; charset=utf-8', dataType: 'text', // it was 'json' //async: false, success: function(msg) { if (!msg.error) { var data = json5.parse(msg); // json5 so much more friendly updatePlot(data); } else { alert(msg.error); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("Error:\n\n" + errorThrown); }, complete: function() { $("#update-plot").prop('disabled', false); // Re-enable button $("#update-plot-loading").addClass('invisible'); } }); }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda