передача pandas кадра данных в javascript в виде табличного массива - PullRequest
1 голос
/ 06 января 2020

Это может быть очень простой проблемой, но я совершенно новичок в javascript и не могу понять.

Я работаю над созданием графика боке, который обновляет ColumnDataSource по щелчку. Внутри обратного вызова javascript я использую вызов ajax, а затем php для получения обновленного pandasdf с сервера, и большая часть пока работает хорошо.

Попробуйте передать pandas фрейм данных как json, я продолжаю терпеть неудачу. Я попробовал несколько ответов, опубликованных здесь, но все они как-то передают массив в виде строки.

Вот упрощенное воспроизведение проблемы.

submit. html отправляет форму, а затем принимает массив из ответ. php

<!DOCTYPE html>
<link rel="shortcut icon" href="favicon.ico">
<html>
   <body>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script type="text/javascript">
$("document").ready(function(){
  $(".js-ajax-php-json").submit(function(){
    var data1 = {
      "action": "test"
    };
    data1 = $(this).serialize() + "&" + $.param(data1);
    $.ajax({
      type: "POST",
      dataType: "json",
      url: "response.php",
      data: data1,
      success: function(data) {
        console.table(data)
        $(".the-return").html(
        "return: " + data["index"]
        );

        alert("Form submitted successfully.\nReturned json: " + data["index"]);
      }
    });
    return false;
  });
});
</script>


    <form action="return.php" class="js-ajax-php-json" method="post" accept-charset="utf-8">
      <input type="text" name="st_numbers" value="" placeholder="write something" />
      </select>
      <input type="submit" name="submit" value="Submit form"  />
    </form>

    <div class="the-return">
      [HTML is replaced when successful.]
    </div>

</body>
</html>

ответ. php

<?php
\\ a call to server-side python code to calculate and print( df.reset_index().to_dict('list'))
\\ $query = $_SERVER['QUERY_STRING'];
\\ exec($python." server_side_calc.py ".$query, $return)

\\ what it is doing is essentially the same as;
echo json_encode(["{'index': [0, 1, 2, 3], 'p': [10, 20, 30, 50], 'init': [0.5178, 0.11115, 0.1903, 0.026], '24': [0.385, 0.028, 0.104, -0.0052]}"]);
?>

Эти программы читают pandas фрейм данных в виде строки "{'index': [0, 1, 2, 3], 'p': [10, 20, 30, 50], 'init': [0.5178, 0.11115, 0.1903, 0.026], '24': [0.385, 0.028, 0.104, -0.0052]}" Я понятия не имею, где самые внешние блейты [] пошел и почему его нельзя распознать как массив.

Любые предложения приветствуются.

Спасибо за вашу помощь.

Юи

...