Pandas样式的默认浮动格式

gopyfrb3  于 2023-03-11  发布在  其他
关注(0)|答案(2)|浏览(132)

我在Jupyter中有大量的 Dataframe 要输出,列是字符串、int和浮点数的混合,浮点数大多需要是'%.2f',但是一小部分需要特定的格式--大多数是百分比和float-as-int。
具体的格式设置很简单。但是为样式设置默认的浮动格式似乎不存在。

  • display.float_format不与样式配合使用
  • Styler.format('{:.2f}'.format)在字符串/整数上扼流圈。
  • Styler.set_precision()使用通用格式,而不是浮点格式。
  • PrettyPandas没有这样的选项,并且忽略pd.options.display.float_format

到目前为止,我找到的唯一选择是编写一个函数,将自定义格式应用于某些浮点型列,将默认格式应用于所有其他列,同时忽略字符串和整型。
这看起来非常笨拙,必须显式地为90%的列写入相同的格式。有没有办法通过dtype设置一个除默认样式外相同的样式?

gg0vcinb

gg0vcinb1#

目前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 dataframe子类化,使其拥有自己的dataframe类,并具有预定义的样式,如上面的代码所示:Pandas分类指南

izkcnapc

izkcnapc2#

对于Pandas,我发现最有用的解决方案是在脚本的早期包含以下行:

pd.选项.显示.浮点格式=“{:,.0f}".格式

当然,小数位数以及“千位”分隔符可以根据需要进行调整。

运行状况警告-通过使用此选项,所有输出(例如,打印、显示、描述等)都将对浮点输出进行类似调整。这可能会使脚本的问题解决变得复杂,因为显示的数字可能与实际显示的数字不同。

相关问题