es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo imprimir una barra inversa literal para obtener \pm en un marco de datos de pandas para generar barras de error adecuadas en una tabla de latex en python?

Obviamente he visto https://stackoverflow.com/questions/19095796/how-to-print-a-single-backslash y duplicados relacionados https://stackoverflow.com/questions/24278190/cant-print-single-backslash-in-python, https://stackoverflow.com/questions/56689741/how-to-print-a-single-backslash-in-python-in-a-string, https://stackoverflow.com/questions/301068/quoting-backslashes-in-python-string-literals.

Pero creo que mi problema es que tengo pandas involucrado y no está generando la tabla de LaTeX correcta que necesito. Obtengo:

Initialization Test Accuracy
0 Random 0.200+-0.029
1 Random2 0.200+-0.0
\begin{tabular}{ll}
\toprule
Initialization & Test Accuracy \
\midrule
Random & 0.200\textbackslash pm0.029 \
Random2 & 0.200\textbackslash pm0.0 \
\bottomrule
\end{tabular}

Pero necesito:

Initialization Test Accuracy
0 Random 0.200+-0.029
1 Random2 0.200+-0.0
\begin{tabular}{ll}
\toprule
Initialization & Test Accuracy \
\midrule
Random & 0.200 \pm 0.029 \
Random2 & 0.200 \pm 0.0 \
\bottomrule
\end{tabular}

¿cómo puedo hacer que pandas imprima la tabla de LaTeX correcta para mí?

script completo:


import pandas as pd data = {'firstcolumn': ['firstvalue', 'second_value', ...], 'secondcolumn': ['firstvalue', 'second_value', ...], .... } import pandas as pd from uutils import putpmtopandasdata def putpmtopandasdata(data: dict) -> dict: """ Cambiar +- a \pm para su visualización en LaTeX. ref: - https://stackoverflow.com/questions/70008992/how-to-print-a-literal-backslash-to-get-pm-in-a-pandas-data-frame-to-generate-a """ for column_name, data_values in data.items(): # data[column_name] = [data_value.replace('+-', r'\pm') for data_value in data_values] data[column_name] = [data_value.replace('+-', r'\\pm') for data_value in data_values] # data[column_name] = [data_value.replace('+-', '\pm') for data_value in data_values] return data data = { 'Initialization': ['Random', 'Random2', ], 'Test Accuracy': ['0.200+-0.029', '0.200+-0.0', ], } df = pd.DataFrame(data) print(df) data = putpmtopandasdata(data) df = pd.DataFrame(data) print(df.to_latex(index=False))
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando generar una tabla LaTeX desde un DataFrame de Pandas. Para hacer esto, necesitas usar el método .to_latex(). Este método toma un argumento escape que te permite escapar caracteres especiales como las barras invertidas. Puedes establecer este argumento como True para asegurarte de que las barras invertidas estén correctamente escapadas. Por ejemplo:

    df.to_latex(index=False, escape=True)

    Esto debería generar la tabla LaTeX que necesitas.

Comments are closed.