Я хотел бы вставить ссылку (на веб-страницу) внутри таблицы pandas, поэтому, когда она отображается в ноутбуке ipython, я могу нажать ссылку.Вставьте ссылку внутри таблицы pandas
Я попытался следующие:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame(range(5), columns=['a'])
In [3]: df['b'] = df['a'].apply(lambda x: 'http://example.com/{0}'.format(x))
In [4]: df
Out[4]:
a b
0 0 http://example.com/0
1 1 http://example.com/1
2 2 http://example.com/2
3 3 http://example.com/3
4 4 http://example.com/4
но URL только отображается в виде текста.
Я также попытался с помощью IPython объекта HTML:
In [5]: from IPython.display import HTML
In [6]: df['b'] = df['a'].apply(lambda x:HTML('http://example.com/{0}'.format(x)))
In [7]: df
Out[7]:
a b
0 0 <IPython.core.display.HTML object at 0x0481E530>
1 1 <IPython.core.display.HTML object at 0x0481E770>
2 2 <IPython.core.display.HTML object at 0x0481E7B0>
3 3 <IPython.core.display.HTML object at 0x0481E810>
4 4 <IPython.core.display.HTML object at 0x0481EA70>
, но он будет отображать только Repr объекта.
Любые другие идеи?
EDIT: ALKO получил правильный ответ, просто хотел бы добавить, что ширина ячейки ограничена по умолчанию, и длинный HTML код будет обрезан, то есть:
<a href="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0">xxx</a>
станет это:
<a href="aaaaaaaaaaaaaaaaaaaaaa...
и будет отображаться неправильно. (даже если текст ххх коротка и может поместиться в клетке)
Я обошел его, установив:
pd.set_printoptions(max_colwidth=-1)
Я могу подтвердить, что он работает (с использованием anconda 4.2.0)! Спасибо @alko. – Tarrasch
Я заметил, что для нескольких длинных URL-адресов панды «молча» сокращают html, чтобы в ячейках отображалось «пустое». Вот решение: http://stackoverflow.com/q/26277757/621449 – Tarrasch
Этот метод усекает любую ссылку длиннее 35 символов, что означает, что рендеринг ссылок не работает ... любая идея, как обойти это/ –