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
我正在使用 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