library(reticulate)
use_virtualenv("r-reticulate", required = TRUE)
py_install(c("pandas", "IPython", "tabulate"))
## Using virtual environment "C:/Users/chris/Documents/.virtualenvs/r-reticulate" ...
## + "C:/Users/chris/Documents/.virtualenvs/r-reticulate/Scripts/python.exe" -m pip install --upgrade --no-user "pandas" "IPython" "tabulate"

Default render

df
##        size  weight
## cat     1.0     3.0
## dog     1.5     5.0
## koala   1.0     2.5

Try HTML

Some quote are still there preventing correct printing

df.to_html()
## '<table border="1" class="dataframe">\n  <thead>\n    <tr style="text-align: right;">\n      <th></th>\n      <th>size</th>\n      <th>weight</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>cat</th>\n      <td>1.0</td>\n      <td>3.0</td>\n    </tr>\n    <tr>\n      <th>dog</th>\n      <td>1.5</td>\n      <td>5.0</td>\n    </tr>\n    <tr>\n      <th>koala</th>\n      <td>1.0</td>\n      <td>2.5</td>\n    </tr>\n  </tbody>\n</table>'
df.to_html()
size weight
cat 1.0 3.0
dog 1.5 5.0
koala 1.0 2.5

So it requires some special processing

df_html = df.to_html()
cat(py$df_html)
size weight
cat 1.0 3.0
dog 1.5 5.0
koala 1.0 2.5

Using IPython Display helps

from IPython.display import HTML
HTML(df.to_html())
size weight
cat 1.0 3.0
dog 1.5 5.0
koala 1.0 2.5

Improve stylings using Bootstrap class

df_html = df.to_html(classes = ["table", "table_condensed"])
cat(py$df_html)
size weight
cat 1.0 3.0
dog 1.5 5.0
koala 1.0 2.5
HTML(df.to_html(classes = ["table", "table_condensed"]))
size weight
cat 1.0 3.0
dog 1.5 5.0
koala 1.0 2.5

Try Markdown

Still quoting, so it requires some special printing

df.to_markdown()
## '|       |   size |   weight |\n|:------|-------:|---------:|\n| cat   |    1   |      3   |\n| dog   |    1.5 |      5   |\n| koala |    1   |      2.5 |'
df.to_markdown()

‘| | size | weight ||:——|——-:|———:|| cat | 1 | 3 || dog | 1.5 | 5 || koala | 1 | 2.5 |’

df_markdown = df.to_markdown()
cat(py$df_markdown)
size weight
cat 1 3
dog 1.5 5
koala 1 2.5

Using IPython Display helps

from IPython.display import Markdown
Markdown(df.to_markdown())
size weight
cat 1 3
dog 1.5 5
koala 1 2.5
LS0tDQp0aXRsZTogIlBhbmRhcyBQcmludGluZyINCmF1dGhvcjogIkNocmlzdG9waGUgRGVydmlldXgiDQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkocmV0aWN1bGF0ZSkNCnVzZV92aXJ0dWFsZW52KCJyLXJldGljdWxhdGUiLCByZXF1aXJlZCA9IFRSVUUpDQpweV9pbnN0YWxsKGMoInBhbmRhcyIsICJJUHl0aG9uIiwgInRhYnVsYXRlIikpDQpgYGANCg0KYGBge3B5dGhvbiwgZWNobz1GQUxTRX0NCmltcG9ydCBwYW5kYXMgYXMgcGQNCg0KZGF0YSA9IHsNCiAgJ3NpemUnOiBbMS4sIDEuNSwgMV0sDQogICd3ZWlnaHQnOiBbMywgNSwgMi41XQ0KfQ0KDQpkZiA9IHBkLkRhdGFGcmFtZShkYXRhLCBpbmRleCA9IFsnY2F0JywgJ2RvZycsICdrb2FsYSddKQ0KYGBgDQoNCiMgRGVmYXVsdCByZW5kZXINCg0KYGBge3B5dGhvbn0NCmRmDQpgYGANCg0KIyBUcnkgSFRNTA0KDQpTb21lIHF1b3RlIGFyZSBzdGlsbCB0aGVyZSBwcmV2ZW50aW5nIGNvcnJlY3QgcHJpbnRpbmcNCg0KYGBge3B5dGhvbn0NCmRmLnRvX2h0bWwoKQ0KYGBgDQoNCmBgYHtweXRob24sIHJlc3VsdHMgPSAiYXNpcyJ9DQpkZi50b19odG1sKCkNCmBgYA0KDQpTbyBpdCByZXF1aXJlcyBzb21lIHNwZWNpYWwgcHJvY2Vzc2luZw0KDQpgYGB7cHl0aG9ufQ0KZGZfaHRtbCA9IGRmLnRvX2h0bWwoKQ0KYGBgDQoNCmBgYHtyLCByZXN1bHRzPSdhc2lzJ30NCmNhdChweSRkZl9odG1sKQ0KYGBgDQoNCiMgVXNpbmcgSVB5dGhvbiBEaXNwbGF5IGhlbHBzDQoNCmBgYHtweXRob24sIHJlc3VsdHMgPSAiYXNpcyJ9DQpmcm9tIElQeXRob24uZGlzcGxheSBpbXBvcnQgSFRNTA0KSFRNTChkZi50b19odG1sKCkpDQpgYGANCg0KIyBJbXByb3ZlIHN0eWxpbmdzIHVzaW5nIEJvb3RzdHJhcCBjbGFzcyANCg0KYGBge3B5dGhvbn0NCmRmX2h0bWwgPSBkZi50b19odG1sKGNsYXNzZXMgPSBbInRhYmxlIiwgInRhYmxlX2NvbmRlbnNlZCJdKQ0KYGBgDQoNCmBgYHtyLCByZXN1bHRzPSdhc2lzJ30NCmNhdChweSRkZl9odG1sKQ0KYGBgDQoNCmBgYHtweXRob24sIHJlc3VsdHMgPSAiYXNpcyJ9DQpIVE1MKGRmLnRvX2h0bWwoY2xhc3NlcyA9IFsidGFibGUiLCAidGFibGVfY29uZGVuc2VkIl0pKQ0KYGBgDQoNCiMgVHJ5IE1hcmtkb3duDQoNClN0aWxsIHF1b3RpbmcsIHNvIGl0IHJlcXVpcmVzIHNvbWUgc3BlY2lhbCBwcmludGluZw0KDQpgYGB7cHl0aG9ufQ0KZGYudG9fbWFya2Rvd24oKQ0KYGBgDQoNCmBgYHtweXRob24sIHJlc3VsdHMgPSAiYXNpcyJ9DQpkZi50b19tYXJrZG93bigpDQpgYGANCg0KYGBge3B5dGhvbn0NCmRmX21hcmtkb3duID0gZGYudG9fbWFya2Rvd24oKQ0KYGBgDQoNCmBgYHtyLCByZXN1bHRzID0gImFzaXMifQ0KY2F0KHB5JGRmX21hcmtkb3duKQ0KYGBgDQoNCiMgVXNpbmcgSVB5dGhvbiBEaXNwbGF5IGhlbHBzDQoNCmBgYHtweXRob24sIHJlc3VsdHMgPSAiYXNpcyJ9DQpmcm9tIElQeXRob24uZGlzcGxheSBpbXBvcnQgTWFya2Rvd24NCk1hcmtkb3duKGRmLnRvX21hcmtkb3duKCkpDQpgYGANCg0KDQo=