来自pandas的JS dataTables

13 投票
6 回答
7720 浏览
提问于 2025-04-17 17:07

我想把pandas的数据框(dataFrames)和数据表(dataTables)一起使用。但是我不知道怎么在没有id的情况下初始化这个表格。

有没有办法在我调用df.to_html()的时候,在表格标签里设置一个id呢?

6 个回答

3

我采取了一种稍微不同的方法,决定通过CSS类来初始化,这样的好处是所有的pandas表格都变成了DataTables。如果你想要更细致的控制,可以添加另一个类,使用不同的选项。

$(document).ready(function(){
    $('.dataframe').DataTable();
});
6

我觉得在 to_html 这个功能里没有这个行为,不过你可以手动插入它:

In [11]: df = pd.DataFrame([1])

In [12]: s = df.to_html()

In [13]: print (s[:7] + 'id="my_dfs_id" ' + s[7:])
<table id="my_df_id" border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>0</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>0</strong></td>
      <td> 1</td>
    </tr>
  </tbody>
</table>

你可以把这个行为放到一个函数里:

def df_to_html_with_id(df, id):
    s = df.to_html()
    return s[:7] + 'id="%s" ' % id + s[7:]

使用示例: df_to_html_with_id(df, "hello")

19

你可以试试这个:

df.to_html(classes = 'my_class" id = "my_id')

这基本上就像是SQL注入。
Pandas的to_html函数在类名周围使用双引号。你可以用单引号来定义类的参数,然后在里面放入双引号来结束Pandas的类。接着在你的ID名称周围加上开头的双引号,但让Pandas自己来结束这些双引号。输出结果将会是这样的:

'<table border="1" class="dataframe my_class" id = "my_id">...'

希望这能帮到你。

撰写回答