python發郵件:pandas DataFrame.to_html 改變數字的顯示格式,float_format,formatters

工作中需要利用郵件每天向領導發送報表和一些統計數據,利用python可以實現每天定時發送非常方便,而且可以在正文中附上pandas dataframe表格,df.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'))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章