工作中需要利用郵件每天向領導發送報表和一些統計數據,利用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'))