python – 使用to_html将CSS类应用于Pandas DataFrame

weixin_38048892 2019-09-12 01:36:24
我在使用Pandas“to_html”方法应用“classes”参数来设置DataFrame的样式时遇到了麻烦. “classes:str或list或tuple,默认为None要应用于生成的html表的CSS类“来自:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_html.html 我可以像这样呈现样式化的DataFrame(例如): df = pd.DataFrame([[1, 2], [1, 3], [4, 6]], columns=['A', 'B']) myhtml = df.style.set_properties(**{'font-size': '11pt', 'font-family': 'Calibri','border-collapse': 'collapse','border': '1px solid black'}).render() with open('myhtml.html','w') as f: f.write(myhtml) 如何使用带有“to_html”的“classes”来设置数据框架的html输出,如下所示: df.to_html('myhtml.html',classes=<something here>)
...全文
707 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38065957 2019-09-12
  • 打赏
  • 举报
回复
Pandas的to_html只输出一个包含HTML表格标记的大字符串. classes参数是一个便利处理程序,用于给出< table>一个类属性,将在之前创建的CSS文档中引用它.因此,将to_html合并到更广泛的HTML文档构建中,该构建引用外部CSS. 有趣的是,to_html添加了双重类< table class =“dataframe mystyle”>它可以在CSS中单独引用,.dataframe {…} .mystyle {…},或者一起引用.dataframe.mystyle {…}.下面用随机数据进行演示. 数据 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'] ) print(demo_df.head(10)) # date analysis_tool num1 database num2 os num3 bool # 0 2018-04-21 pandas 153.474246 mysql 0.658533 ios 74 True # 1 2018-04-13 sas 199.461669 sqlite 0.656985 windows 7 11 False # 2 2018-06-09 stata 12.918608 oracle 0.495707 android 25 False # 3 2018-04-24 spss 88.562111 sql server 0.113580 windows 7 42 False # 4 2018-05-05 spss 110.231277 oracle 0.660977 windows 10 76 True # 5 2018-04-05 sas -68.140295 sql server 0.346894 windows 10 0 True # 6 2018-05-07 julia 12.874660 postgres 0.195217 ios 79 True # 7 2018-01-22 r 189.410928 mysql 0.234815 windows 10 56 False # 8 2018-01-12 pandas -111.412564 sql server 0.580253 debian 30 False # 9 2018-04-12 r 38.963967 postgres 0.266604 windows 7 46 False CSS(另存为df_style.css) /* includes alternating gray and white with on-hover color */ .mystyle { font-size: 11pt; font-family: Arial; border-collapse: collapse; border: 1px solid silver; } .mystyle td, th { padding: 5px; } .mystyle tr:nth-child(even) { background: #E0E0E0; } .mystyle tr:hover { background: silver; cursor: pointer; } 熊猫 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'))) OUTPUT HTML(引用df_style.css,假设在同一目录中;请参阅表中的类参数) <html> <head><title>HTML Pandas Dataframe with CSS</title></head> <link rel="stylesheet" type="text/css" href="df_style.css"/> <body> <table border="1" class="dataframe mystyle"> <thead> <tr style="text-align: center;"> <th></th> <th>date</th> <th>analysis_tool</th> <th>num1</th> <th>database</th> <th>num2</th> <th>os</th> <th>num3</th> <th>bool</th> </tr> </thead> <tbody> <tr> <th>0</th> <td>2018-04-21</td> <td>pandas</td> <td>153.474246</td> <td>mysql</td> <td>0.658533</td> <td>ios</td> <td>74</td> <td>True</td> </tr> <tr> <th>1</th> <td>2018-04-13</td> <td>sas</td> <td>199.461669</td> <td>sqlite</td> <td>0.656985</td> <td>windows 7</td> <td>11</td> <td>False</td> </tr> <tr> <th>2</th> <td>2018-06-09</td> <td>stata</td> <td>12.918608</td> <td>oracle</td> <td>0.495707</td> <td>android</td> <td>25</td> <td>False</td> </tr> <tr> <th>3</th> <td>2018-04-24</td> <td>spss</td> <td>88.562111</td> <td>sql server</td> <td>0.113580</td> <td>windows 7</td> <td>42</td> <td>False</td> </tr> <tr> <th>4</th> <td>2018-05-05</td> <td>spss</td> <td>110.231277</td> <td>oracle</td> <td>0.660977</td> <td>windows 10</td> <td>76</td> <td>True</td> </tr> ... </tbody> </table> </body> </html>

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧