Pandas 样式的默认浮点格式

Posted

技术标签:

【中文标题】Pandas 样式的默认浮点格式【英文标题】:Default float format for Pandas styling 【发布时间】:2019-03-30 02:08:54 【问题描述】:

我有大量数据帧要在 Jupyter 中输出。这些列是字符串、整数和浮点数的混合。浮点数大多需要为'%.2f',但一小部分需要特定格式——主要是百分比和浮点数。

具体的格式很简单。但是似乎不存在为样式设置默认浮点格式。

display.float_format 不配合Styling Styler.format(':.2f'.format) 阻塞字符串/整数。 Styler.set_precision() 使用通用格式,而不是浮点数。 PrettyPandas 没有这样的选项,并且忽略了pd.options.display.float_format

到目前为止,我发现的唯一选择是编写一个函数,将自定义格式应用于某些浮点列,并将默认格式应用于所有其他列,同时忽略字符串和整数。

必须将相同的格式显式写入我的 90% 的列似乎非常笨拙。有没有办法通过 dtype 设置相同的默认样式?

【问题讨论】:

【参考方案1】:

目前 Styler 没有这样的选项(它仍在开发中,因此您可以提出这个想法)。据我所知,您需要 Styler。 如果是这样,并且如果您只需要为视图使用 Styler,则可以使用默认的全浮点格式设置新的样式变量:

float_cols = [c for c in df.dtypes.index  if 'float' in str(df.dtypes[c])]
s = df.style.format(dict(zip(float_cols,  [lambda x: ":.2f".format(x)]*10)))

完成此操作后,您可以使用变量 s 进行任何进一步的样式操作,例如:

s = s.applymap(...)
s = s.format(...)
etc...

您还可以尝试将 pandas 数据框子类化,以拥有您自己的数据框类,其具有如上面代码中的预定义样式:Pandas subclassing guide

【讨论】:

我只打算让这个开放几周,让其他人有机会回答,因为它没有正确解决我的问题。但看来你的答案是正确的,并且尽可能好。谢谢!

以上是关于Pandas 样式的默认浮点格式的主要内容,如果未能解决你的问题,请参考以下文章

pandas DataFrame 中的自定义浮点格式

pandas截取字符串固定长度

python 在Pandas(Python)中将整数转换为浮点格式

如何编辑多个 Pandas DataFrame 浮点列的字符串格式?

如何在 Python Pandas 中使用逗号作为小数分隔符的浮点格式?

IntelliJ IDEA 14怎么修改css样式默认排版格式