【问题标题】:JS dataTables from pandas来自熊猫的 JS 数据表
【发布时间】:2013-02-26 00:20:22
【问题描述】:

我想将 pandas 数据帧与数据表一起使用。我无法弄清楚如何在没有 id 的情况下初始化表。

当我调用df.to_html()时,有什么方法可以在table标签中设置id吗?

【问题讨论】:

    标签: python datatables pandas


    【解决方案1】:

    你可以试试这个:

    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">...'
    

    希望对您有所帮助。

    【讨论】:

    • 这是一个漂亮的 hack!
    • 我的班级指的是什么?还是我的身份证?不幸的是,我不知道 HTML 或 CSS。我试图使用 Win32com 将某些内容输出到 Outlook 电子邮件,但我无法应用格式。我不知道如何创建一个自定义类,而且这些 .styles 似乎无法正确进入 Outlook。 (df .style .format(percent) .applymap(color_negative_red, subset=['csat', 'fcr']) .set_properties(**{'font-size': '9pt', 'font-family': 'Calibri '}) .bar(subset=['total_hits', 'survey_count'], color='lightblue'))
    • 您需要对 HTML/CSS 有基本的了解才能完全掌握“class”和“id”的含义。基本上,类和 id 是仅将 CSS 格式应用于 html 的特定部分的便捷方式。试试这个以获取有关课程的信息w3schools.com/cssref/sel_class.asp 在此处查看课程和 ID 之间的区别stackoverflow.com/questions/12889362/…
    • 奇怪的引号是怎么回事:'my_class" id = "my_id' ?
    • Nic Sc​​ozzaro 我在我的回答中解释了它。引号就像 SQL 注入在查询中插入分号一样。
    【解决方案2】:

    我认为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")

    【讨论】:

      【解决方案3】:

      我采取了一种稍微不同的方法,并决定通过 CSS 类进行初始化,这样做的好处是所有的 pandas 表都变成了 DataTables。如果您想要一个具有不同选项的更精细的控件,您可以添加另一个类

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

      【讨论】:

      • 这是否意味着您不再需要 id 并且它知道任何 pd.DataFrame.to_html 是数据框对象?
      • @tsando:就是这样!一个小缺点是,如果您的页面上有很多表格,您可能需要不同的设置,您可以使用 classes paramater 进行控制
      【解决方案4】:

      虽然接受的答案非常有效,但这是我将 id 和一些类应用于表格标题的方法。

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

      这是可行的,因为 to_html 只返回一个字符串,我们可以使用字符串对象的 python 替换方法将任何部分替换为其他任何部分(请注意,我只使用了开头的 '<thead> 的样式,即。表格的标题部分!

      【讨论】:

        【解决方案5】:

        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>

        【讨论】:

          猜你喜欢
          • 2021-02-15
          • 2016-05-19
          • 1970-01-01
          • 1970-01-01
          • 2020-12-15
          • 2019-07-09
          • 2016-11-13
          • 2020-04-14
          • 2018-12-11
          相关资源
          最近更新 更多