On Jan 9, 2025, at 10:13 PM, Pedro Andres Aranda Gutierrez wrote: > > Hi, > > For org tables generated in Python, I use python-tabulate. Actually, I forked the original library to include the possibility of generating the latex attributes from Python too. > > Something like: > > --- cut here --- > #+BEGIN_SRC python :results value raw :exports results > import math > import pandas as pd > import tabulate > > xvals = [math.pi * i / 5 for i in range(10)] > df = pd.DataFrame({ > 'x': xvals, > 'sin(x)' : [math.sin(xvals[i]) for i in range (10)], > 'cos(x)' : [math.cos(xvals[i]) for i in range (10)] > }) > > attrs=':environment longtable :align p{2cm}p{2cm}p{2cm} :placement [h] :center t' > return tabulate.tabulate( > df, > headers=df.columns, tablefmt='orgtbl', floatfmt=".3f", > caption='Table exported from Python with extended tabulate', > label='labextend', > attr_latex=attrs, > showindex=False) > #+END_SRC > #+RESULTS: > --- cut here --- > > Take a look at https://github.com/paaguti/python-tabulate if it sounds interesting. > > CAVEAT: the author of python-tabulate wasn't very excited about this ;-) > > Best, /PA Thanks for the suggestion! I was creating the output in a rather similar way, using the pandas to_markdown() function, which calls tabulate to do the work. Using the orgtbl output option, it only prints one horizontal line under the header, so I created a simple wrapper function to add additional horizontal lines at top and bottom (and optionally between the last and penultimate lines, for when there’s a “Total” row): ----- def add_hlines(table, total_row=False): """Add horizontal lines to markdown table.""" table_markdown = table.to_markdown(index=False, tablefmt="orgtbl", floatfmt=",.2f") table_lines = table_markdown.split("\n") hline = table_lines[1] table_lines.insert(0, hline) if total_row: table_lines.insert(-1, hline) table_lines.append(hline) return "\n".join(table_lines) -----