如何格式化pandas数据帧的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))
这个问题是很久以前提的。那时,熊猫还没有包括pd.Styler。它是在
0.17.1
版本中添加的。以下是您将如何使用它来实现您期望的目标以及其他一些目标:
以下是一些示例数据:
让我们使用
df.style
格式化它:注意,您可以很好地设置全局默认值
pd.options.display.float_format
,而不是在子集列上调用.format
:关于操作点2:
pandas(从0.20.1开始)不允许以简单的方式重写默认整数格式。它在^{} (函数
labmda
)中硬编码:我假设您真正需要的是如何重写所有整数的格式:replace(“monkey patch”)the
IntArrayFormatter
以打印由逗号分隔的数千个整数值,如下所示:注意:
pandas.formats.format
。pandas.core.format
。侧边
对于漂浮物,您不需要跳过这些环,因为它有一个configuration option:
HTML接收自定义的HTML数据字符串。没有人禁止您为
.dataframe
类(由to_html
方法添加到表中)传递带有自定义CSS样式的样式标记。所以最简单的解决方案就是添加一个样式并将其与
df.to_html
的输出连接起来:但我建议为数据帧定义一个自定义类,因为这将改变笔记本中所有表的样式(样式是“全局的”)。
您还可以在前面的一个单元格中定义样式,然后只需设置
classes
方法的to_html
参数:相关问题 更多 >
编程相关推荐