Pandas样式的默认浮动格式

问题描述 投票:2回答:1

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

具体的格式很容易。但是,为样式设置默认浮动格式似乎不存在。

  • display.float_format不与造型合作
  • Styler.format('{:.2f}'.format)扼杀了琴弦/整体。
  • Styler.set_precision()使用通用格式,而不是浮点数。
  • PrettyPandas没有这样的选择,并且忽略了pd.options.display.float_format

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

如果必须明确地将相同的格式写入我的列的90%,这似乎非常糟糕。有没有办法通过dtype设置相同的除默认样式?

python pandas
1个回答
1
投票

目前Styler没有这样的选项(它仍在开发中,所以你可以提出这个想法)。而且就我而言,Styler需要你。如果是这样,并且如果您只需要Styler视图,则可以使用默认的all-floats格式设置新的样式变量:

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

© www.soinside.com 2019 - 2024. All rights reserved.