gpt4 book ai didi

python - Pandas 数据框 to_html 单元格对齐

转载 作者:太空宇宙 更新时间:2023-11-03 17:18:44 26 4
gpt4 key购买 nike

我有一个 Pandas 数据框,如下所示:

    X     Y        Z
abc 0.2 -1.5
efg 0.8 -1.4

我想使用 to_html() 方法从中生成 HTML,但我希望 X 列左对齐,Y 列和 Z 右对齐。另外,我想将负 float 显示为(1.5)和(1.4),并将它们的字体颜色设置为红色。看起来 to_html() 中有一个格式化程序选项,似乎我可以用括号显示负数,但我不知道如何在这种情况下设置对齐方式和字体颜色。

任何帮助将不胜感激。

最佳答案

我一直在研究同样的正确理由问题。这似乎是一个已知问题(请参阅上面@TomAugspurger 的评论)。我使用您的解决方案来显示带有括号的负数,并且能够得到正确的工作理由。然而,有一个问题。您需要有正数的前导和尾随特殊字符才能完成此操作。

首先,计算出您想要右对齐的最长 float 中有多少位有效数字。

import pandas as pd
import numpy as np

#Create pandas dataframe who's values are floats of varying length
df = pd.DataFrame(np.random.randn(10, 2), columns=['Y', 'Z']) * 10000

#Determine the length of the longest float
y = len(str(max(abs(df.Y))))
z = len(str(max(abs(df.Z))))
if y > z:
print(y)
else:
print(z)

我不知道为什么df.to_html(float_format = lambda x: '{:f}'.format(x)不会右对齐结果,因为浮点默认右对齐。

我还尝试通过添加前导空格使每个 float 具有最小长度来欺骗函数正确对齐,以便它们在右侧对齐 df.to_html(float_format = lambda x: '{:20f}'.format(x) ,但在转换为 html 时,对于 x < 20 个有效数字(或您在格式声明中指定的任意数字),会省略前导空格。

我发现,对于有效数字较少的 float ,强制在 html 输出中显示前导空格的唯一方法是在 float 周围使用特殊字符,并将 float 的有效数字格式指定为至少 1比实际最长值长。在下面的代码块中,我将浮点长度设置为最小 20 个字符,但可以限制为最大值(我们之前打印的)加 1。

#Convert df to html using '(x)' to denote -x and '+x+' to denote +x and right justify
df.to_html(float_format = lambda x: '({:20f})'.format(abs(x)) if x < 0 else '+{:20f}+'.format(abs(x)))

我欢迎使用更优雅的方式来做到这一点。

  • Windows 7 64 位
  • Python 3.5.2
  • Pandas 0.18.1
  • Numpy 1.11.1

关于python - Pandas 数据框 to_html 单元格对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33400176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com