我怎样才能格式化IPython html显示的pandas数据帧呢
据我所知,numpy有设施set_printoptions,我可以这样做:
int_frmt:lambda x : '{:,}'.format(x)
np.set_printoptions(formatter={'int_kind':int_frmt})
Run Code Online (Sandbox Code Playgroud)
和其他数据类型类似.
但是,当在html中显示数据帧时,IPython不会选择这些格式选项.我还需要
pd.set_option('display.notebook_repr_html', True)
Run Code Online (Sandbox Code Playgroud)
但是如上所述的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))
Run Code Online (Sandbox Code Playgroud)