我目前正在写一份报告,其中包含许多用python计算的值和不确定性,并存储在pandas DataFrame中。
这些值必须放入报告中,包括错误。目前,我唯一的方法是手动将值与错误组合在一起。其中一个示例如下所示:
\begin{tabular}{cccc}
\hline
Konzentration $c/\si{\gram\per\liter}$ & $D_\text{app} / \si{\square\meter\per\second}$ & $R_h / \si{\meter}$ & PDI \\
\hline
\SI{0.50}{} & \SI{9.9(2)e-13}{} & \SI{3.84(8)e-7}{} & \SI{4.1(3)}{} \\
\SI{0.33}{} & \SI{6.35(7)e-13}{} & \SI{5.96(6)e-7}{} & \SI{1.4(2)}{} \\
\SI{0.25}{} & \SI{1.16(2)e-12}{} & \SI{3.26(6)e-7}{} & \SI{2.6(2)}{} \\
\SI{0.20}{} & \SI{6.11(9)e-15}{} & \SI{6.20(9)e-7}{} & \SI{4.9(3)}{} \\
\hline
\end{tabular}

我知道pd.to_latex()在一定程度上减少了工作量,但据我所知,它不能处理错误。
您是否知道在LaTeX或python上有什么方法可以在不手动组合值和错误的情况下实现这样的表。DataFrame如下所示:

到目前为止,我唯一的想法是写一个函数,它接受值、误差和不确定性的大小(在本例中总是1),并返回一个我可以在pd.to_latex()中使用的字符串。
有没有更简单或者更好的方法来做到这一点?
发布于 2019-06-23 07:06:43
我已经编写了一个函数,它将值和错误组合在一个字符串中。
def conv2siunitx(val, err, err_points=1):
val = f'{val:.20e}'.split('e')
err = f'{err:.20e}'.split('e')
first_uncertain = int(val[1]) - int(err[1]) + err_points
my_val = f'{np.round(float(val[0]), first_uncertain-1):.10f}'
my_err = f'{np.round(float(err[0]), err_points-1):.10f}'.replace('.','')
# Avoid 1. and write 1 instead
if first_uncertain > 1:
first_uncertain = first_uncertain + 1
return(f'{my_val[:first_uncertain]}({my_err[:err_points]})e{val[1]}')与S-columns相结合,这将导致我所寻找的结果。
https://stackoverflow.com/questions/56715139
复制相似问题