带有来自熊猫数据框的不确定性的LaTeX表

时间:2019-06-22 11:36:43

标签: python pandas latex

我目前正在处理一个报告,其中包含许多用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}

enter image description here

我知道pd.to_latex()会部分地减少工作量,但据我所知,它并不能解决错误。

您是否知道在LaTeX或python上有任何方法来实现这样的表,而无需手动组合值和错误。 DataFrame如下所示: enter image description here

到目前为止,我唯一的想法是编写一个函数,该函数接受值,误差和不确定性的大小(在这种情况下始终为1)并返回一个可以与pd.to_latex()一起使用的字符串

是否有更简单或可能更好的方法?

1 个答案:

答案 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列可得出我一直在寻找的结果。