2013-02-26 7 views
11

pandas dataFramesとdataTablesを使いたいです。私はIDなしでテーブルを初期化する方法を理解できません。JS dataTables from pandas

df.to_html()を呼び出すときに、テーブルタグにidを設定する方法はありますか?

答えて

12

あなたはこれを試みることができる:

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

それは基本的にSQLインジェクションのようなものです。
パンダのto_html関数は、クラスの前後に二重引用符を使用します。一重引用符を使用してclasses引数を定義し、二重引用符を入れてpandasのクラスを終了することができます。あなたのID名の前後に二重引用符を入れてください。ただし、pandasが二重引用符を閉じます。出力は次のようになります。

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

希望するものがあります。

+0

これは美しいハックです! – Private

+0

私のクラスは何を指していますか?または私の身分証明書?私は残念なことにHTMLやCSSを知らない。私はWin32comを使ってOutlookの電子メールに何かを出力しようとしていましたが、適用する書式を取得できません。私はカスタムクラスを作成する方法を知らないし、これらのスタイルはOutlookに正しく​​作成されていないようです。 ( .style .format(パーセント)color_negative_red .applymap(サブセット= [ 'CSAT'、 'FCR']) .set_properties(** { 'フォントサイズ' DF '9PT'、「フォント(例:total_hits '、' survey_count '、color =' lightblue ')) – trench

+0

HTML/CSSの基本的な知識が必要です。 "class"と "id"は意味する。基本的に、クラスとIDは、htmlの特定の部分にのみCSSの書式を適用する便利な方法です。クラスに関する情報を参照してくださいhttp://www.w3schools.com/cssref/sel_class.aspクラスとIDの違いについてはこちらをご覧くださいhttp://stackoverflow.com/questions/12889362/difference-between-id-and- class-in-css-when-use- –

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")

2

受け入れられた答えは驚くほどうまくいきますが、ここではidといくつかのクラスをテーブルの見出しに適用しました。

html = df.to_html().replace('<table','<table class="tableBoot" id="myTable"') 

to_htmlは単なる文字列を返し、私たちは何か(私は唯一の開口部「<」を使用していることに注意してください)とのいずれかの部品を交換するために、文字列オブジェクトのメソッドを置き換えるのpythonを使用することができますので、これは動作します。私は<thead>へのスタイルを含めるためにこれを使用しました。テーブルの見出しセクション!

2

私はsligthly異なるアプローチをとり、すべてのパンダテーブルがDataTablesになったという利点を持つCSSクラスによって初期化することに決めました。さまざまなオプションでより洗練されたコントロールをしたい場合は、別のクラスを追加できます

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

これはIDを必要とせず、pd.DataFrame.to_htmlがデータフレームオブジェクトであることを何とか知っているということですか? – tsando

+0

@tsando:まさにそれ!多少の欠点は、あなたのページに[classes paramater](http://pandas.pydata.org/pandas-docs/stable/generated/pandas)で制御できるテーブルがたくさんある場合には、別の設定が必要になることです。 DataFrame.to_html.html) – citynorman