Georg Heiler
Georg Heiler

Reputation: 17676

How to get data from R to pandas

In a jupiter notebook I created some 2-d-list in R like

%%R
first <- "first"
second <- "second"

names(first) <- "first_thing"
names(second) <- "second_thing"

x <- list()
index <- length(x)+1
x[[index]] = first
x[[index +1]] = second

a %Rpull x does not return the nice representation but rather a ListVector. How can I convert it into something nicer e.g. a dict / pd.Dataframe? So far I had no luck following http://pandas.pydata.org/pandas-docs/stable/r_interface.html pull from R

edit

The list I want to convert is a 2-d list like results the updated code snipped from above

Upvotes: 3

Views: 870

Answers (2)

Nickil Maveli
Nickil Maveli

Reputation: 29711

Just slice the ListVector:

%Rpull x
pd.DataFrame(data=[i[0] for i in x], columns=['X'])

Image

If you want a dictionary instead:

dict([[i,j[0]] for i,j in enumerate(x)])
{0: 'first', 1: 'first'}

Upvotes: 1

lgautier
lgautier

Reputation: 11545

Since you created an R list (rather than, say, a data frame), the Python object returned is a ListVector.

R lists can have duplicated names, making the conversion to a dict something that cannot be guaranteed to be safe.

Should you feel lucky, and wanting a dict, it is rather straightforward. For example:

 from rpy2.robjects.vectors import ListVector
 l = ListVector({'a':1, 'b':2})
 d = dict(l.items())

Upvotes: 0

Related Questions