来自pandas的JS dataTables
我想把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">...'
希望这能帮到你。