Я пытаюсь преобразовать DataFrame в Julia в таблицу LaTeX, аналогично тому, как это делается в Python.
У меня есть примеры кода Python и Julia. В Python я использую pandas для преобразования DataFrame в таблицу LaTeX с определенными параметрами форматирования. Вот код Python:
import pandas as pd
df = pd.DataFrame(
dict(name=["Raphael", "Donatello"], age=[26, 45], height=[181.23, 177.65])
)
print(
df.to_latex(
index=False,
formatters = {"name": str.upper},
float_format = "{:.1f}".format,
)
)
Выходная таблица LaTeX из приведенного выше кода Python выглядит следующим образом:
\begin{tabular}{lrr}
\toprule
name & age & height \\
\midrule
Raphael & 26 & 181.23 \\
Donatello & 45 & 177.65 \\
\bottomrule
\end{tabular}
https://i.sstatic.net/KnBA0iBG.png
В Джулии я нашел следующий код:
using DataFrames
df = DataFrame(name=["Raphael", "Donatello"], age=[26, 45], height=[181.23, 177.65])
show(stdout, MIME("text/latex"), df)
Этот код генерирует базовую таблицу LaTeX, которая выглядит следующим образом:
\begin{tabular}{r|ccc}
& name & age & height\\
\hline
& String & Int64 & Float64\\
\hline
1 & Raphael & 26 & 181.23 \\
2 & Donatello & 45 & 177.65 \\
\end{tabular}
https://i.sstatic.net/J7pnoV2C.png
Но мне хотелось бы знать, как применить форматирование, аналогичное примеру с Python.





Есть несколько вариантов. Например:
using Pkg
pkg"activate --temp"
pkg"add DataFrames, Latexify"
using DataFrames, Latexify
df = DataFrame(name = ["Raphael", "Donatello"], age = [26, 45], height = [181.23, 177.65])
# Don't forget to read the docs, including
# https://korsbo.github.io/Latexify.jl/stable/arguments/#Tabular
latexify(df; env = :table, booktabs = true, latex = false) |> print
что даст тебе
\begin{tabular}{ccc}
\toprule
name & age & height\\
\midrule
Raphael & 26 & 181.23\\
Donatello & 45 & 177.65\\
\bottomrule
\end{tabular}
вы можете дополнительно манипулировать полученной строкой (например, изменить спецификатор позиции на lrr)
l = latexify(df; env = :table, booktabs = true, latex = false)
using LaTeXStrings
latexstring(replace(l, "{ccc}" => "{lrr}"))
(некоторые функции, работающие с String, также предназначены для работы с LaTeXStrings - см. это)
Или, если вы хотите больше контроля над выводом, чтобы он соответствовал версии Python:
pkg"add LaTeXTabulars, LaTeXStrings"
using LaTeXTabulars
using LaTeXStrings
# https://github.com/tpapp/LaTeXTabulars.jl
latex_tabular(
"mytable.tex",
Tabular("lrr"),
[Rule(:top), names(df), Rule(:mid), df[1, :], df[2, :], Rule(:bottom)],
)
— что вы также можете сделать программно — чтобы получить:
\begin{tabular}{lrr}
\toprule
name & age & height \\
\midrule
Raphael & 26 & 181.23 \\
Donatello & 45 & 177.65 \\
\bottomrule
\end{tabular}
РЕДАКТИРОВАНИЕ: вы можете дополнительно настроить вызов latexify так же, как вы это сделали df.to_latex. Вы можете указать форматтер , добавить его по умолчанию и т. д.