emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Import CSV file, remove columns, print table


From: John Kitchin
Subject: Re: [O] Import CSV file, remove columns, print table
Date: Mon, 16 Sep 2019 09:31:46 -0400

Here is another 'source block' solution, this time in python. You could so something  similar in elisp. Here I use the library of babel approach so you can call it wherever you want.



#+name: csv
| ID | Name         | Titel / Title | Vorname / First Name | Nachname / Surname | Institution           |
|  3 | Carol Carrot | Prof.         | Carol                | Carrot             | University of Veg     |
|  1 | Alice Apple  | Fr./Ms.       | Alice                | Apple              | Universität zum Apfel |
|  2 | Bob Birne    | Hr./Mr.       | Bob                  | Birne              | Pear University       |


See https://orgmode.org/worg/org-contrib/babel/library-of-babel.html

#+name: signature-table
#+BEGIN_SRC python  :var data="" :results value raw
results = [[surname, firstname, ""] for _, _, _, firstname, surname, _ in data[1:]]

sorted_results = sorted(results,key=lambda row: row[1])

sorted_results = [[i + 1] + result for i, result in enumerate(sorted_results)]

import tabulate
return tabulate.tabulate(sorted_results, ['#', 'Surname', 'First name', 'Signature'], tablefmt='orgtbl')
#+END_SRC



#+call: signature-table(data="">
#+RESULTS:
| # | Surname | First name | Signature |
|---+---------+------------+-----------|
| 1 | Apple   | Alice      |           |
| 2 | Birne   | Bob        |           |
| 3 | Carrot  | Carol      |           |


-----------------------------------
Professor John Kitchin 
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803


On Mon, Sep 16, 2019 at 8:48 AM Loris Bennett <address@hidden> wrote:
Hi John,

Thanks - that's a nicely compact solution, albeit in the category
'source block' and in a language I'm not very skilled at :-)

I realise that I have slightly misstated the problem.  The ID in the
imported CSV is just a key from the database - I don't need it on the
list of participants.  However, it would be nice to number the
participants, who are sorted by surname.

How would I insert a column which just numbers the row?

Cheers,

Loris

John Kitchin <address@hidden> writes:

> You can do something like this:
>
> #+name: csv
> | ID | Name         | Titel / Title | Vorname / First Name | Nachname / Surname | Institution           |
> |  1 | Alice Apple  | Fr./Ms.       | Alice                | Apple              | Universität zum Apfel |
> |  2 | Bob Birne    | Hr./Mr.       | Bob                  | Birne              | Pear University       |
> |  3 | Carol Carrot | Prof.         | Carol                | Carrot             | University of Veg     |
>
> #+BEGIN_SRC emacs-lisp :var data=""> > (let ((table (mapcar (lambda (row) (list (nth 0 row) (nth 4 row) (nth 3 row))) data)))
>   (setf (car table) (append (car table) '("Signature")))
>   table)
> #+END_SRC
>
> #+RESULTS:
> | ID | Nachname / Surname | Vorname / First Name | Signature |
> |  1 | Apple              | Alice                |           |
> |  2 | Birne              | Bob                  |           |
> |  3 | Carrot             | Carol                |           |
>
> John
>
> -----------------------------------
> Professor John Kitchin
> Doherty Hall A207F
> Department of Chemical Engineering
> Carnegie Mellon University
> Pittsburgh, PA 15213
> 412-268-7803
> @johnkitchin
> http://kitchingroup.cheme.cmu.edu
>
> On Fri, Sep 13, 2019 at 9:36 AM Loris Bennett <address@hidden> wrote:
>
>  Hi,
>
>  I want to create a list of participants of an event which people can
>  sign, so that I can record who actually turned up.
>
>  From the registration website I can download a CSV file and import it
>  into and org file:
>
>  | ID | Name         | Titel / Title | Vorname / First Name | Nachname / Surname | Institution           |
>  |  1 | Alice Apple  | Fr./Ms.       | Alice                | Apple              | Universität zum Apfel |
>  |  2 | Bob Birne    | Hr./Mr.       | Bob                  | Birne              | Pear University       |
>  |  3 | Carol Carrot | Prof.         | Carol                | Carrot             | University of Veg     |
>
>  I would like to reduce this to
>
>  | ID | Nachname / Surname | Vorname / First Name | Signature |
>  |  1 | Apple              | Alice                |           |
>  |  2 | Birne              | Bob                  |           |
>  |  3 | Carrot             | Carol                |           |
>
>  and then print it out as a LaTeX table.
>
>  I can obviously write a source block of Python or R to do this, but can
>  I manipulate the table more directly in Org?
>
>  Cheers,
>
>  Loris
>
>  --
>  This signature is currently under construction.
>
--
Dr. Loris Bennett (Mr.)
ZEDAT, Freie Universität Berlin         Email address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]