2016-10-11 1 views
4

в Jupyter, используя Pandas, есть ли способ показать весь блок данных на новой вкладке навигатора?iPython - отобразить полный фрейм данных на новой вкладке

Когда я хочу управлять фреймворком данных, я обычно экспортирую его в .csv, а затем открываю в Excel.
Я ищу более быстрый способ, но я не хочу отображать полный кадр в своем ноутбуке, поскольку он делает его нечитаемым.

Поскольку нормальный выход кадра является таблицей HTML, мне интересно, как мы можем показать эту таблицу в другом месте, чем в ноутбуке.

ответ

4

Вы можете использовать javascript вместе с ipython.display, чтобы открыть новое окно и показать весь блок данных в нем. Преимущество состоит в том, что вы можете сделать это несколько раз без необходимости создавать фактические файлы HTML между ними или перезагрузить окно. My solution for that question автоматически обновляет открытое окно и вид эмулирует функции View() из R/RStudio:

from IPython.display import HTML 
def View(df): 
    css = """<style> 
    table { border-collapse: collapse; border: 3px solid #eee; } 
    table tr th:first-child { background-color: #eeeeee; color: #333; font-weight: bold } 
    table thead th { background-color: #eee; color: #000; } 
    tr, th, td { border: 1px solid #ccc; border-width: 1px 0 0 1px; border-collapse: collapse; 
    padding: 3px; font-family: monospace; font-size: 10px }</style> 
    """ 
    s = '<script type="text/Javascript">' 
    s += 'var win = window.open("", "Title", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=780, height=200, top="+(screen.height-400)+", left="+(screen.width-840));' 
    s += 'win.document.body.innerHTML = \'' + (df.to_html() + css).replace("\n",'\\') + '\';' 
    s += '</script>' 
    return(HTML(s+css)) 

View(df) 
+0

Это удивительное решение, спасибо! Знаете ли вы, как добавить параметр фильтра/заказа поверх столбцов, стиль excel? Может быть, чрезмерная инженерия, но это даст прекрасную функцию просмотра! – Bkyn

+0

Это новый вопрос stackoverflow, или вы можете его самостоятельно создать. Нужно просто добавить функцию сортировки динамически к 'document.getElementsByClassName ('dataframe') [0]', используя библиотеки, такие как [sorttable.js] (http://www.kryogenix.org/code/browser/sorttable/) , [tablefilter] (http://tablefilter.free.fr/), [и т. д.] (http://www.w3schools.com/howto/howto_js_filter_table.asp). Вы должны добавить этот код в строку innerHTML. – Martin

6

Я нашел мой ответ: сохранить кадр как HTML-страницу с .to_html, а затем открыть его с помощью регулярной функции питона WebBrowser:

import webbrowser 
... 
df.to_html("frame.html") 
url = "http://localhost:8888/files/notebook/frame.html" 
webbrowser.open(url,new=2) 
Смежные вопросы