我要在Jupyter中输出大量数据帧。列是字符串,整数和浮点数的混合。浮点数大多需要为'%.2f'
,但是一小部分需要特定的格式-大部分为百分比和int浮点数。
特定格式很容易。但是似乎不存在为样式设置默认浮点格式的问题。
display.float_format
与样式无关Styler.format('{:.2f}'.format)
对字符串/整数造成了扼杀。Styler.set_precision()
使用常规格式,而不是浮动格式。pd.options.display.float_format
到目前为止,我发现的唯一选择是编写一个函数,该函数将自定义格式应用于某些浮点列,将默认格式应用于所有其他浮点列,而忽略字符串和整数。
必须将相同的格式显式写入90%的列似乎很麻烦。是否可以通过dtype设置除默认样式外的其他样式?
答案 0 :(得分: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