如何格式化熊猫数据框的 IPython html 显示,以便
- 数字是正确的
- 数字有逗号作为千位分隔符
- 大浮点数没有小数位
我知道这numpy
有set_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))