我有大量数据帧要在 Jupyter 中输出。这些列是字符串、整数和 float 的混合。 float 大部分需要为 '%.2f'
,但一小部分需要特定格式 - 主要是百分比和 float-as-int。
具体的格式很简单。但是为样式设置默认的 float 格式似乎不存在。
display.float_format
不与样式配合Styler.format('{:.2f}'.format)
在字符串/整数上被阻塞。Styler.set_ precision()
使用通用格式,而不是 float 。- PrettyPandas 没有这样的选项,并且忽略
pd.options.display.float_format
到目前为止,我发现的唯一选择是编写一个函数,将自定义格式应用于某些浮点列,并将默认格式应用于所有其他列,同时忽略字符串和整数。
必须明确地为我的 90% 的列写入相同的格式,这似乎非常笨拙。有没有办法通过 dtype 设置相同的默认样式?
最佳答案
目前 Styler 没有这样的选项(它仍在开发中,因此您可以提出这个想法)。据我所知,您需要 Styler。 如果是这样,并且如果您仅需要为 View 使用 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 dataframe 进行子类化,以拥有自己的具有预定义样式的 dataframe 类,如上面的代码所示: Pandas subclassing guide
关于python - Pandas 样式的默认 float 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55427521/