Skip to content

Commit

Permalink
ENH: Issue pandas-dev#2679. DataFrame.to_html() to create hyperlinks …
Browse files Browse the repository at this point in the history
…for valid URL strings
  • Loading branch information
tdas committed Apr 13, 2015
1 parent 35b20d8 commit 8fc784b
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
6 changes: 6 additions & 0 deletions pandas/core/format.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

from pandas.core.base import PandasObject
from pandas.core.common import adjoin, notnull
from pandas.io.common import _is_url
from pandas.core.index import Index, MultiIndex, _ensure_index
from pandas import compat
from pandas.compat import(StringIO, lzip, range, map, zip, reduce, u,
Expand Down Expand Up @@ -861,8 +862,13 @@ def write_tr(self, line, indent=0, indent_delta=4, header=False,
self.write('<tr style="text-align: %s;">' % align, indent)
indent += indent_delta


for i, s in enumerate(line):
val_tag = tags.get(i, None)
if s and hasattr(s, 'lower'):
s = s.lstrip(' ')
if _is_url(s):
s = "<a href=\"%s\">%s</a>"%(s, s)
if header or (self.bold_rows and i < nindex_levels):
self.write_th(s, indent, tags=val_tag)
else:
Expand Down
29 changes: 29 additions & 0 deletions pandas/tests/test_format.py
Original file line number Diff line number Diff line change
Expand Up @@ -716,6 +716,35 @@ def test_to_html_multiindex_sparsify_false_multi_sparse(self):
</table>"""
self.assertEqual(result, expected)


def test_to_html_with_hyperlinks(self):
df = DataFrame([[0,'http://pandas.pydata.org/', 'pydata.org']],columns=['foo', 'bar', None], index=lrange(1))
f = lambda x: 'a'[x]
result = df.to_html(formatters={'__index__': f})
#result = df.to_html()
expected = """\
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>foo</th>
<th>bar</th>
<th>None</th>
</tr>
</thead>
<tbody>
<tr>
<th>a</th>
<td>0</td>
<td>&lt;a href="http://pandas.pydata.org/"&gt;http://pandas.pydata.org/&lt;/a&gt;</td>
<td>pydata.org</td>
</tr>
</tbody>
</table>"""
self.assertEqual(result, expected)



def test_to_html_multiindex_sparsify(self):
index = MultiIndex.from_arrays([[0, 0, 1, 1], [0, 1, 0, 1]],
names=['foo', None])
Expand Down

0 comments on commit 8fc784b

Please sign in to comment.