使多行在 pandas dataframe.to_latex() 中工作

MrT*_*T77 8 python latex dataframe pandas

我有以下数据框:

      dataset Baseline       Version2      
               F-1   F-2      F-1   F-2
0       G    0.971 0.967    0.971 0.967
1       H    0.780 0.762    0.800 0.777
2       S    0.401 0.320    0.453 0.365
3       T    0.881 0.825    0.989 0.985
Run Code Online (Sandbox Code Playgroud)

我的目标是将其导出到 LaTeX,这是通过 pandas.DataFrame.to_latex() 完成的:

latex = df.to_latex(
        index=False,
        escape=False,
        sparsify=True,
        multirow=True,
        multicolumn=True,
        multicolumn_format='c',
        position='H'
    )
Run Code Online (Sandbox Code Playgroud)

在 LaTeX 中获取以下代码:

\begin{table}[H]
\centering
\begin{tabular}{lrrrr}
\toprule
dataset & \multicolumn{2}{c}{Baseline} & \multicolumn{2}{c}{Version2} \\
        &      F-1 &   F-2 &      F-1 &   F-2 \\
\midrule
      G &    0.971 & 0.967 &    0.971 & 0.967 \\
      H &    0.780 & 0.762 &    0.800 & 0.777 \\
      S &    0.401 & 0.320 &    0.453 & 0.365 \\
      T &    0.881 & 0.825 &    0.989 & 0.985 \\
\bottomrule
\end{tabular}
\end{table}
Run Code Online (Sandbox Code Playgroud)

渲染如下: 在此输入图像描述 我的问题是:我希望“数据集”中出现多行,用“数据集”和“”覆盖两行,如下所示: 在此输入图像描述 我有multirow=True选择,但我无法完成这项工作。知道如何解决这个问题吗?

Mac*_*ski 1

我更喜欢稍微不同的东西,即不要在视觉上混合索引和列。这里的索引是“数据集”,列在“Benchmark”和“Version2”下分层作为根。 在此输入图像描述

为此,请从以下数据文件开始

        dataset Baseline       Version2      
               F-1   F-2      F-1   F-2
0       G    0.971 0.967    0.971 0.967
1       H    0.780 0.762    0.800 0.777
2       S    0.401 0.320    0.453 0.365
3       T    0.881 0.825    0.989 0.985
Run Code Online (Sandbox Code Playgroud)

然后生成表

        dataset Baseline       Version2      
               F-1   F-2      F-1   F-2
0       G    0.971 0.967    0.971 0.967
1       H    0.780 0.762    0.800 0.777
2       S    0.401 0.320    0.453 0.365
3       T    0.881 0.825    0.989 0.985
Run Code Online (Sandbox Code Playgroud)

和乳胶代码

latex = df.to_latex(
        index=True,
        escape=False,
        sparsify=True,
        multirow=True,
        multicolumn=True,
        multicolumn_format='c',
        position='p',
        bold_rows=True
    )
Run Code Online (Sandbox Code Playgroud)