Python Pandas pandas.DataFrame.to_html函数方法的使用

Python 的 Pandas 库中,pandas.DataFrame.to_html 函数是一个非常有用的工具,它可以将 DataFrame 转换为 HTML 表格代码。这个功能特别适用于需要在网页上展示数据或通过 HTML 格式发送数据的情况。本文主要介绍一下Pandas中pandas.DataFrame.to_html方法的使用。

DataFrame.to_html(buf = None,columns = None,col_space = None,header = True,index = True,na_rep ='NaN',formatters = None,float_format = None,sparsify = None,index_names = True,justify = None,bold_rows = True,classes = None,escape = True,max_rows = None,max_cols = None,show_dimensions = False,notebook = False,decimal ='.',border = None,table_id = None)源码

DataFrame呈现为HTML表格。

to_html特定选项
bold_rows : 布尔值,默认为True
在输出中将行标签加粗
classes : str或list或tuple,默认为None
CSS类应用于生成的html表
escape : 布尔值,默认为True
将字符<>进行escape编码
max_rows : int,可选
显示的最大行数。如果为None,则显示全部。
max_cols : int,可选
显示的最大列数。如果为None,则显示全部。
decimal : 字符串,默认为'.'
字符被识别为小数分隔符,例如欧洲的','
版本0.18.0中的新功能。
border : int
border=border开头<table>标记中包含一个属性 。默认pd.options.html.border
版本0.19.0中的新功能。
table_id : str,可选
如果指定,则css id包含在开始<table>标记中。
版本0.23.0中的新功能。

参数:

buf:类似StringIO,可选

缓冲区写入

columns:sequence,可选

要写的列的子集; 默认为 None写入所有列

col_spaceint,可选

每列的最小宽度

headerbool,可选

是否打印列标签,默认为True

indexbool,可选

是否打印索引(行)标签,默认为True

na_repstring,可选

要使用的NAN字符串表示,默认为'NaN'

formatters:单参数函数的列表或字典,可选

formatter函数按位置或名称应用于列的元素,默认为None

每个函数的结果必须是一个unicode字符串。列表的长度必须等于列数。

float_format:单参数函数,可选

formatter函数,如果它们是浮点数,则应用于列的元素,默认为None

此函数的结果必须是unicode字符串。

sparsify:bool,可选

对于具有分层索引的DataFrame,设置为False以在每行打印每个多索引键,

默认为True

index_namesbool,可选

打印索引的名称,默认为True

line_widthint,可选

用字符包裹一行的宽度,默认没有换行

table_idstr,可选

由to_html创建的<table>元素的id

版本0.23.0中的新功能。

justifystr,默认None

如何证明列标签的合理性。如果None使用打印配置中的选项

(由set_option控制),

可以设置的值有是

  • left
  • right
  • center
  • justify
  • justify-all
  • start
  • end
  • inherit
  • match-parent
  • initial
  • unset

返回:

formatted: 字符串(或unicode,取决于数据和选项)

例如

import pandas as pd
import numpy as np
pd.set_option('display.width', 1000)
pd.set_option('colheader_justify', 'center')
np.random.seed(6182018)
demo_df = pd.DataFrame({'date': np.random.choice(pd.date_range('2018-01-01', '2018-06-18', freq='D'), 50),
                        'analysis_tool': np.random.choice(['pandas', 'r', 'julia', 'sas', 'stata', 'spss'],50),              
                        'database': np.random.choice(['postgres', 'mysql', 'sqlite', 'oracle', 'sql server', 'db2'],50), 
                        'os': np.random.choice(['windows 10', 'ubuntu', 'mac os', 'android', 'ios', 'windows 7', 'debian'],50), 
                        'num1': np.random.randn(50)*100,
                        'num2': np.random.uniform(0,1,50),                   
                        'num3': np.random.randint(100, size=50),
                        'bool': np.random.choice([True, False], 50)
                       },
                        columns=['date', 'analysis_tool', 'num1', 'database', 'num2', 'os', 'num3', 'bool']
          )
pd.set_option('colheader_justify', 'center')   # FOR TABLE <th>
html_string = '''
<html>
  <head><title>HTML Pandas Dataframe with CSS</title></head>
  <link rel="stylesheet" type="text/css" href="df_style.css"/>
  <body>
    {table}
  </body>
</html>.
'''
# OUTPUT AN HTML FILE
with open('myhtml.html', 'w') as f:
    f.write(html_string.format(table=demo_df.to_html(classes='mystyle')))

推荐阅读
cjavapy编程之路首页