我正在使用 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 表)的特定行的精度有所不同。用熊猫可以做到这一点吗?
对于此示例,我希望第 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
是的,这对我有用,谢谢。现在,弄清楚这两行代码是如何工作的。