gpt4 book ai didi

python - 如何格式化 Pandas 数据框的 IPython html 显示?

转载 作者:IT老高 更新时间:2023-10-28 22:08:31 26 4
gpt4 key购买 nike

如何格式化 IPython html 显示的 pandas 数据帧,以便

  1. 数字右对齐
  2. 数字以逗号作为千位分隔符
  3. 大 float 没有小数位

我知道 numpy 具有 set_printoptions 的功能,我可以在其中做:

int_frmt:lambda x : '{:,}'.format(x)
np.set_printoptions(formatter={'int_kind':int_frmt})

对于其他数据类型也是如此。

但是 IPython 在 html 中显示数据帧时不会选择这些格式选项。我还是需要的

pd.set_option('display.notebook_repr_html', True)

但上面有 1、2、3。

编辑:以下是我对 2 和 3 的解决方案(不确定这是不是最好的方法),但我仍然需要弄清楚如何使数字列正确对齐。

from IPython.display import HTML
int_frmt = lambda x: '{:,}'.format(x)
float_frmt = lambda x: '{:,.0f}'.format(x) if x > 1e3 else '{:,.2f}'.format(x)
frmt_map = {np.dtype('int64'):int_frmt, np.dtype('float64'):float_frmt}
frmt = {col:frmt_map[df.dtypes[col]] for col in df.columns if df.dtypes[col] in frmt_map.keys()}
HTML(df.to_html(formatters=frmt))

最佳答案

HTML 接收自定义的 html 数据字符串。没有人禁止您为 .dataframe 类(to_html 方法添加到表中)的自定义 CSS 样式传入样式标记。

所以最简单的解决方案就是添加一个样式并将其与 df.to_html 的输出连接起来:

style = '<style>.dataframe td { text-align: right; }</style>'
HTML( style + df.to_html( formatters=frmt ) )

但我建议为 DataFrame 定义一个自定义类,因为这会改变笔记本中所有表格的样式(样式为“全局”)。

style = '<style>.right_aligned_df td { text-align: right; }</style>'
HTML(style + df.to_html(formatters=frmt, classes='right_aligned_df'))

你也可以在前面的一个单元格中定义样式,然后只设置to_html方法的classes参数:

# Some cell at the begining of the notebook
In [2]: HTML('''<style>
.right_aligned_df td { text-align: right; }
.left_aligned_df td { text-align: right; }
.pink_df { background-color: pink; }
</style>''')

...

# Much later in your notebook
In [66]: HTML(df.to_html(classes='pink_df'))

关于python - 如何格式化 Pandas 数据框的 IPython html 显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18876022/

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