Доступ к объекту данных в расширении Jupyter
Я создал расширение JavaScript для моего ноутбука Jupyter, которое будет отображать некоторые данные для меня. Прямо сейчас у меня есть данные, жестко закодированные в расширении.
Мой вопрос: есть ли способ получить доступ к объекту данных, который существует в ноутбуке?
Например, ниже приведен пример кода для расширения:
define([
'base/js/namespace'
], function(
Jupyter
) {
function test_second_extension() {
var handler = function () {
console.log(
'This is the current notebook application instance:',
Jupyter.notebook
);
var data = [{"x": 1, "y": 5}, {"x": 2, "y":12}, {"x": 3, "y": 27}];
console.log(data);
};
var action = {
icon: 'fa-comment-o', // a font-awesome class used on buttons, etc
help : 'Print notebook instance',
help_index : 'zz',
handler : handler
};
var prefix = 'test_second_extension';
var action_name = 'show-alert';
var full_action_name = Jupyter.actions.register(action, action_name, prefix); // returns 'my_extension:show-alert'
Jupyter.toolbar.add_buttons_group([full_action_name]);
}
return {
load_ipython_extension: test_second_extension
};
});
И это то, что у меня есть в ячейке Python3 Jupyter:
import pandas as pd
data = pd.read_json('[{"x": 1, "y": 5}, {"x": 2, "y":12}, {"x": 3, "y": 27}]')
Есть ли способ получить доступ к объекту данных, созданному в ячейке Jupyter из расширения, вместо его жесткого кодирования?
Ответы
Ответ 1
Немного странно, но попробуй это
from IPython.core.display import Javascript
import json
#list of dicts
list_of_dicts = [{"x": 1, "y": 5}, {"x": 2, "y":12}, {"x": 3, "y": 27}]
#convert to json string
json_list = json.dumps(list_of_dicts)
#run in cell
#This will run in the console check your browser
Javascript("""
var json_list = {};
window.variable = json_list;
console.log(json_list);""".format(json_list))
#or as a function
#replace console_log with what you need
def run_in_console(data):
json_list = json.dumps(data)
return Javascript("""
var json_list = {};
window.variable = json_list;
console.log(json_list);""".format(json_list))