0

我正在使用 jupyter 自动化一些报告并将其导出为 html。我有一些大桌子,我想在桌子的右侧添加一个滚动条。这里有一个类似的问题:How to get a vertical scrollbar in HTML output from Jupyter notebooks。这是一个可重现的示例:

    import pandas as pd
    import numpy as np

    pd.set_option('display.max_columns', None)
    pd.set_option('display.max_rows', None)

    np.random.seed(2021)

    df = pd.DataFrame({'type': ['a'] * 50 + ['b'] * 50,
              'var_1': np.random.normal(size=100),
              'var_2': np.random.normal(size=100)})

我认为可以使用 .css 样式来完成,但我很难应用它。Pandas 有一些有用的表格样式方法(https://pandas.pydata.org/pandas-docs/stable/user_guide/style.html)。然后,我尝试了以下方法:

   vscrollbar = {
     'selector': 'div.output_html',
     'props': ' height: 500px; overflow-y: scroll;'
   }

   df.style.set_table_styles([vscrollbar])

之后,我从 CLI 编译笔记本

   jupyter-nbconvert example.ipybn --to-html

输出不显示正确的滚动条。但是如果我检查 html 代码,我通过 throw Pandas 的样式就在那里

...
<style type="text/css">
#T_e24f1_ table {
  height: 500px;
  overflow-y: scroll;
}
</style>
<table id="T_e24f1_">
  <thead>
    <tr>
      <th class="blank level0">&nbsp;</th>
      <th class="col_heading level0 col0">type</th>
      <th class="col_heading level0 col1">var_1</th>
      <th class="col_heading level0 col2">var_2</th>
    </tr>
  </thead>
  <tbody>
...

我不知道我是否传递了正确的选择器,或者 jupyter 是否覆盖了这种风格。

如何在 jupyter nbconvert 的 html 输出中为长表获得正确的滚动条?

4

0 回答 0