我想将熊猫数据帧与数据表一起使用。我无法弄清楚如何在没有 id 的情况下初始化表。
当我调用 df.to_html() 时,有什么方法可以在 table 标签中设置 id?
我想将熊猫数据帧与数据表一起使用。我无法弄清楚如何在没有 id 的情况下初始化表。
当我调用 df.to_html() 时,有什么方法可以在 table 标签中设置 id?
你可以试试这个:
df.to_html(classes = 'my_class" id = "my_id')
这基本上就像一个 SQL 注入。
Pandas 的 to_html 函数在类周围使用双引号。您可以使用单引号来定义 classes 参数,并将双引号放在其中以结束 pandas 的类。然后在您的 id 名称周围加上双引号,但让 pandas 为您关闭这些双引号。输出将如下:
'<table border="1" class="dataframe my_class" id = "my_id">...'
希望有帮助。
我认为这种行为在 中不可用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")
.
我采用了一种稍微不同的方法,并决定通过 CSS 类进行初始化,这样的好处是所有的 pandas 表都变成了 DataTables。如果您想要一个具有不同选项的更精细的控件,您可以添加另一个类
$(document).ready(function(){
$('.dataframe').DataTable();
});
尽管接受的答案非常有效,但这是我将 id 和一些类应用于表格标题的方法。
html = df.to_html().replace('<table','<table class="tableBoot" id="myTable"')
这是有效的,因为 to_html 只返回一个字符串,我们可以使用字符串对象的 python 替换方法将任何部分替换为其他任何部分(请注意,我只使用了开头的 '<')。我用它来包含样式到<thead>
ie。表的标题部分!
pandas.to_html现在有一个参数table_id
,可用于直接设置表 ID。
import pandas as pd
df = pd.DataFrame({
'A': [1, 2],
'B': [3, 4]
})
s = df.to_html(table_id='my_df_id')
print(s)
s
:
<table border="1" class="dataframe" id="my_df_id">
<thead>
<tr style="text-align: right;">
<th></th>
<th>A</th>
<th>B</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>1</td>
<td>3</td>
</tr>
<tr>
<th>1</th>
<td>2</td>
<td>4</td>
</tr>
</tbody>
</table>