Подтвердить что ты не робот

Вставьте ссылку внутри таблицы pandas

Я хотел бы вставить ссылку (на веб-страницу) внутри таблицы pandas, поэтому, когда она отображается в ноутбуке ipython, я могу нажать ссылку.

Я попробовал следующее:

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-адрес отображается только как текст.

Я также пробовал использовать HTML-объект ipython:

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>

но будет отображаться только представление объекта.

Любые другие идеи?

EDIT: alko получил правильный ответ, просто хотел добавить, что ширина ячейки ограничена по умолчанию, а длинный html-код будет усечен, то есть:

<a href="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0">xxx</a>

станет следующим:

<a href="aaaaaaaaaaaaaaaaaaaaaa...

и не будет отображаться правильно. (хотя текст xxx короткий и может помещаться в ячейку)

Я обошел его, установив:

pd.set_printoptions(max_colwidth=-1)
4b9b3361

Ответ 1

Я предполагаю, что вы должны представлять весь объект pandas как объект html, то есть

In [1]: from IPython.display import HTML

In [2]: df = pd.DataFrame(list(range(5)), columns=['a'])

In [3]: df['a'] = df['a'].apply(lambda x: '<a href="#" onclick="location.href='http://example.com/{0}'; return false;">link</a>'.format(x))

In [4]: HTML(df.to_html(escape=False))

Извините, теперь у меня нет IPython, и вы не можете проверить правильность вывода.