首页 > 解决方案 > Pandas 样式的默认浮点格式

问题描述

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

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

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

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

标签: pythonpandas

解决方案


目前 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 子类化指南


推荐阅读