工作中需要利用邮件每天向领导发送报表和一些统计数据,利用python可以实现每天定时发送非常方便,而且可以在正文中附上pandas dataframe表格,df.to_html就可以实现
-
首先我们先看下官方文档的解释:
pandas.DataFrame.to_html
用法非常简单,但是如果我们想把表格制作得更友好一些呢? 毕竟领导的时间很宝贵。
比如我们想让表格里的数字显示千分位分隔符,同时保留两位小数
那就可以通过float_format 或者 formatters来指定显示规则,一开始对于官方文档的解释不是很懂
-
formatters : list or dict of one-parameter functions, optional
formatter functions to apply to columns’ elements by position or name, default None. The result of each function must be a unicode string. List must be of length equal to the number of columns. -
float_format : one-parameter function, optional
formatter function to apply to columns’ elements if they are floats, default None. The result of this function must be a unicode string.
这里的 on-parameter function 长什么样呢?
摸索了一下,这里的format函数可以通过以下两种方式定义:
- 常规定义法 def
def
myFormat
(
x
)
:
# 保留两位小数,显示千分位分隔符
return
format
(
x
,
',.2f'
)
- lambda 定义法
lambda
x
:
format
(
x
,
',.2f'
)
这里的formatters可以指定某些列的格式(包括但不限于数字的格式),float_format则是应用于表格中所有的数字(float)
- 更复杂的formatt可参考 Style
用法如下
df
.
to_html
(
index
=
False
,
formaters
=
{
'A'
:
myFormat
}
)
# 其中A列为数字
# 或者
df
.
to_html
(
index
=
False
,
float_format
=
lambda
x
:
format
(
x
,
',.2f'
)
)