2013-02-26 2 views
11

Я хочу использовать данные о пандах данных с dataTables. Я не могу понять, как инициализировать таблицу без id.JS dataTables from pandas

Есть ли способ установить идентификатор в теге таблицы при вызове df.to_html()?

ответ

12

Вы можете попробовать это:

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

Это как инъекции SQL в основном.
Функция pandas to_html использует двойные кавычки вокруг класса. Вы можете использовать одинарные кавычки для определения аргумента классов и поместить в них двойные кавычки, чтобы закончить класс pandas. Затем добавьте двойные кавычки вокруг своего имени, но пусть панды «закрывают эти двойные кавычки для вас. Выходные данные будут следующими:

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

Надеюсь, что это поможет.

+0

Это прекрасный хак! – Private

+0

Что касается моего класса? или мой идентификатор? К сожалению, я не знаю HTML или CSS. Я пытался получить вывод чего-то в электронную почту Outlook с помощью Win32com, но я не могу применить форматирование. Я не знаю, как создать пользовательский класс, и эти .styles, похоже, не попадают в Outlook должным образом. (DF .style .format (в процентах) .applymap (color_negative_red, подмножеством = [ 'CSAT', 'FCR']) .set_properties (** { 'шрифт-размер': '9пт', «шрифт -family ':' Calibri '}) .bar (subset = [' total_hits ',' survey_count '], color =' lightblue ')) – trench

+0

Вам потребуется базовое понимание HTML/CSS, чтобы полностью понять, что «класс» и «id» означают. В принципе, классы и идентификаторы - это удобные способы применения форматирования CSS только к определенным частям вашего html. Попробуйте это для информации о классах http://www.w3schools.com/cssref/sel_class.asp Посмотрите здесь, что такое различие между классом и идентификатором http://stackoverflow.com/questions/12889362/difference-between-id-and- class-in-css-and-when-to-use-it –

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 просто возвращает строку, и мы можем использовать питон заменить метод строковых объектов заменить любую часть с чем-нибудь еще (обратите внимание, что я использовал только открытие «<»). Я использовал это, чтобы включить стили в <thead>. раздел заголовков таблицы!

2

Я принял несколько разный подход и решил инициализировать класс CSS, который имел то преимущество, что все таблицы pandas стали DataTables. Вы можете добавить еще один класс, если хотите более усовершенствованное управление с различными опциями.

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

означает ли это, что вам больше не нужен идентификатор, и каким-то образом он знает, что какой-либо pd.DataFrame.to_html является объектом dataframe? – tsando

+0

@tsando: Это точно!Небольшой недостаток заключается в том, что вам могут потребоваться разные настройки, если на вашей странице есть много таблиц, с которыми вы можете управлять с помощью [classes paramater] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas. DataFrame.to_html.html) – citynorman

Смежные вопросы