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 样式的默认浮点格式的主要内容,如果未能解决你的问题,请参考以下文章
python 在Pandas(Python)中将整数转换为浮点格式
如何编辑多个 Pandas DataFrame 浮点列的字符串格式?