我目前正在处理一个报告,其中包含许多用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()
一起使用的字符串
是否有更简单或可能更好的方法?
答案 0 :(得分:1)
我编写了一个将值和错误组合在单个字符串中的函数。
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
列可得出我一直在寻找的结果。