Pandas Dataframe 按行显示精度

Pandas Dataframe Display Precision by row

我正在使用 pandas 将我的结果输出到 LaTeX。我目前将我的精度(要打印的小数位数)设置如下:

import pandas as pd
df = pd.DataFrame({'a':[1234.56, 0.01, 1234.56],'b':[1234.56, 0.01, 1234.56]})

pd.set_option('display.float_format', lambda x: '%.2f' % x)

df.to_latex('filename.tex')

这真的很好用。但我希望我的数据帧的特定行的精度不同(以及生成的 TeX table)。 pandas 可以做到这一点吗?

对于这个例子,我希望第 0 行和第 2 行打印时没有小数位,第 1 行打印时有 2 位小数,如下所示:

 df
      a     b
 0    1234  1234
 1    0.01  0.01
 2    1234  1234

这是一个蹩脚的答案,我太累了,想不出更好的答案。但是我不想让你在我对问题质量说了一半之后让你悬着。

p = pd.Series([1, 2, 0], df.index)

df.apply(lambda x: x.map(p.map(lambda x: '{{:0.{}f}}'.format(x).format).loc[x.name]), 1)

        a       b
0  1234.6  1234.6
1    0.01    0.01
2    1235    1235