#!/usr/bin/env python # coding: utf-8 # In[1]: import pandas as pd import numpy as np # In[2]: import rpy2 # In[3]: import rpy2.robjects.conversion as conversion from rpy2.robjects import pandas2ri # In[4]: import pandas.rpy.common as com # In[5]: pandas2ri.activate() # In[6]: rpy2.__version__ # ## Conversion of DataFrame to rpy2 ri and back # In[7]: df = pd.DataFrame({'col_a':[1,2,3], 'col_b':[0.1,0.2,0.4], 'col_c':['a','b','c']}, index=[3,4,5]) # In[8]: df # In[10]: rdf1 = com.convert_to_r_dataframe(df) rdf2 = conversion.py2ri(df) # In[11]: rdf1 # In[12]: rdf2 # In[13]: conversion.ri2py(rdf1) # In[16]: conversion.ri2py(rdf2) # In[19]: com.convert_robj(rdf1) # In[20]: com.convert_robj(rdf2) # In[18]: conversion.ri2py(conversion.py2ri(df.index)) # - index is not preserved in `ri2py` # ## DataFrame with NaN value # In[23]: df = pd.DataFrame({'col_a':[1,2,3], 'col_b':[0.1,np.nan,0.4], 'col_c':['a','b','c']}, index=[3,4,5]) # In[24]: rdf1 = com.convert_to_r_dataframe(df) rdf2 = conversion.py2ri(df) # In[25]: rdf1 # In[26]: rdf2 # In[27]: conversion.ri2py(rdf1) # In[28]: conversion.ri2py(rdf2) # In[29]: com.convert_robj(rdf1) # In[31]: com.convert_robj(rdf2) # ## Automatic conversion is not working with IPython magic # In[33]: get_ipython().run_line_magic('load_ext', 'rpy2.ipython') # In[34]: get_ipython().run_line_magic('R', '-i df') # In[35]: get_ipython().run_line_magic('R', '-o df') # In[36]: get_ipython().run_cell_magic('R', '-o x', 'x <- c(1,2,3)\n') # In[37]: x # In[38]: get_ipython().run_cell_magic('R', '-o df3', "df3 <- data.frame(a=c(1,2,3), b=c('a', 'e', 'f'))\n") # In[39]: df3 # In[40]: conversion.ri2py(df3) # In[42]: get_ipython().run_line_magic('Rpull', 'df3') # In[43]: df3 # In[ ]: