pandas dataFrames を dataTables で使用したいと考えています。IDなしでテーブルを初期化する方法がわかりません。
df.to_html() を呼び出すときにテーブル タグに ID を設定する方法はありますか?
pandas dataFrames を dataTables で使用したいと考えています。IDなしでテーブルを初期化する方法がわかりません。
df.to_html() を呼び出すときにテーブル タグに ID を設定する方法はありますか?
これを試すことができます:
df.to_html(classes = 'my_class" id = "my_id')
基本的にはSQLインジェクションのようなものです。
Pandas の to_html 関数では、クラスを二重引用符で囲みます。一重引用符を使用してクラス引数を定義し、それらの中に二重引用符を入れてパンダのクラスを終了できます。次に、ID 名を二重引用符で囲みますが、パンダにそれらの二重引用符を閉じさせます。出力は次のようになります。
'<table border="1" class="dataframe my_class" id = "my_id">...'
それが役立つことを願っています。
この動作はでは利用できないと思いますがto_html
、1つの方法は、手動で挿入することです。
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")
。
私は少し異なるアプローチを取り、すべての pandas テーブルが DataTables になるという利点がある CSS クラスで初期化することにしました。さまざまなオプションを備えたより洗練されたコントロールが必要な場合は、別のクラスを追加できます
$(document).ready(function(){
$('.dataframe').DataTable();
});
受け入れられた答えは驚くほどうまくいきますが、これはidといくつかのクラスをテーブルの見出しに適用するために私がしたことです。
html = df.to_html().replace('<table','<table class="tableBoot" id="myTable"')
これが機能するのは、to_html が文字列を返すだけであり、文字列オブジェクトの python replace メソッドを使用して任意の部分を他のものに置き換えることができるためです (冒頭の '<' のみを使用したことに注意してください)。これを使用してスタイルを含めました<thead>
。表の見出しセクション!