当前位置: 首页 > 面试题库 >

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

令狐宣
2023-03-14
问题内容

如何设置熊猫数据帧的IPython html显示格式,以便

  1. 数字是正确的
  2. 数字以逗号作为千位分隔符
  3. 大花车没有小数位

据我所知,numpy有设施set_printoptions,我可以这样做:

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

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

但是在以html显示数据框时,IPython不会选择这些格式选项。我仍然需要

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数据的自定义字符串。没有人禁止您传入带有自定义CSS样式的样式标签.dataframe(该to_html方法将其添加到表中)。

因此,最简单的解决方案是仅添加样式并将其与的输出连接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'))

您还可以在前面的单元格之一中定义样式,然后只需设置方法的classes参数即可to_html

# 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'))


 类似资料:
  • 主要内容:get_option(),set_option(),reset_option(),describe_option(),option_context(),常用参数项在用 Pandas 做数据分析的过程中,总需要打印数据分析的结果,如果数据体量较大就会存在输出内容不全(部分内容省略)或者换行错误等问题。Pandas 为了解决上述问题,允许你对数据显示格式进行设置。下面列出了五个用来设置显示格式的函数,分别是: get_option() set_option() reset_option()

  • 我们用PHP可var_dump如下的数据: 请问下,是否有一些格式化的方式把它给格式化显示一下呢?比如我们知道对json可用json.cn来展示内容。 搜索没答案。

  • 问题内容: 这是我的数据框,应重复5次: 我想要这样的结果: 但是必须有一种比保持追加更聪明的方法。实际上,Im正在处理的数据帧应重复50次。 我还没有发现任何实用的东西,包括类似-—的东西,但它在数据框架上不起作用。 有人可以帮忙吗? 问题答案: 您可以使用以下功能: 如果只想重复值而不是索引,则可以执行以下操作:

  • 问题内容: 我正在尝试在IPython笔记本中写论文,但是在显示格式方面遇到了一些问题。说我有以下dataframe ,有什么方法可以格式化并转换为2位小数并转换为百分比。 内部数字不乘以100,例如-0.0057 = -0.57%。 问题答案: 使用round函数替换值,并格式化百分比数字的字符串表示形式: 舍入函数将浮点数舍入为该函数的第二个参数提供的小数位数。 字符串格式可让您根据需要表示数

  • 问题内容: 我有一个包含数百列的数据框,我需要查看所有列名称。 我做了什么: 输出为: 如何显示 所有 列,而不是截断的列表? 问题答案: 您可以全局设置打印选项。我认为这应该工作: 方法1: 方法2: 这样您就可以在执行操作时查看所有列名称和行。列名都不会被截断。 如果只想查看列名,可以执行以下操作:

  • v-charts 提供对数据格式的设置的能力,一个常见的设置数据格式的方式如下所示: <template> <ve-line :data="chartData" :settings="chartSettings"></ve-line> </template> <script> export default { data () { this.chartSettings = { metr