【发布时间】:2013-09-23 10:28:40
【问题描述】:
如何格式化熊猫数据帧的 IPython html 显示,以便
- 数字右对齐
- 数字以逗号作为千位分隔符
- 大浮点数没有小数位
我知道numpy 有set_printoptions 的设施,我可以在哪里做:
int_frmt:lambda x : '{:,}'.format(x)
np.set_printoptions(formatter={'int_kind':int_frmt})
对于其他数据类型也是如此。
但在 html 中显示数据帧时,IPython 不会选择这些格式选项。我还是需要的
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))
【问题讨论】:
-
您还可以指定格式化程序列表,为不存在的那些使用
None值 - 这简化了frmt创建:frmt = [frmt_map.get(dtype, None) for dtype in df.dtypes]。 +1 研究。
标签: python html pandas ipython