如何格式化Pandas数据框的IPython html显示?

11 浏览
0 Comments

如何格式化Pandas数据框的IPython html显示?

如何格式化IPython中pandas数据框的HTML显示,以使以下内容成立:

  1. 数字右对齐
  2. 数字以千位逗号分隔
  3. 大浮点数没有小数位

我知道numpyset_printoptions的功能,我可以这样做:

int_frmt:lambda x : '{:,}'.format(x)
np.set_printoptions(formatter={'int_kind':int_frmt})

其他数据类型也是类似。但是IPython在显示HTML中的数据框时不会应用这些格式选项。我仍然需要有

pd.set_option('display.notebook_repr_html', True)

但是希望能实现以上的1、2、3。

编辑:以下是我对2和3的解决方案(不确定是否是最好的方法),但我仍然需要弄清楚如何使数字列右对齐。

from IPython.display import HTML
int_frmt = lambda x: '{:,}'.format(x)
float_frmt = lambda x: '{:,.0f}'.format(x) if x > 1e3 else '{:,.2f}'.format(x)
frmt_map = {np.dtype('int64'):int_frmt, np.dtype('float64'):float_frmt}
frmt = {col:frmt_map[df.dtypes[col]] for col in df.columns if df.dtypes[col] in frmt_map.keys()}
HTML(df.to_html(formatters=frmt))

0