2017-09-29 5 views
1

Je me demande comment enregistrer une image de données pandas dans un fichier .RData, Comment puis-je enregistrer dans un RData à partir d'une base de données pandas? J'ai tout jusqu'à la dernière étape ici:rpy2 - comment enregistrer un fichier de données sous forme de fichier RData sur le disque?

import pandas as pd 
import rpy2 
from rpy2 import robjects 
from rpy2.robjects import pandas2ri 
pandas2ri.activate() 

# load RData file 
df = pandas2ri.ri2py(robjects.r['get'](robjects.r['load'](path_to_rdata_file))) 

.... do some processing to df ... 

# save df as RData file 
r_df = pandas2ri.py2ri(df) 
?????????? 

Comment puis-je enregistrer les données sur le disque comme pandas un fichier .RData?

Répondre

1

J'ai finalement compris la réponse, voici comment vous écrire .RData fichier en utilisant un dataframe de pandas géants:

premier converti dataframe à R dataframe:

r_data = pandas2ri.py2ri(df) 

Ensuite, nous devons attribuer le dataframe à une variable dans le « espace de travail de R »:

robjects.r.assign("my_df", r_data) 

Enfin, nous pouvons référencer la variable par son nom afin d'appeler lecommande:

robjects.r("save(my_df, file='{}')".format(filename)) 

Voici 2 fonctions d'aide si vous voulez lire/écrire des fichiers RDATA, mais le travail en python avec pandas géants:

# read .RData file as a pandas dataframe 
def load_rdata_file(filename): 
    r_data = robjects.r['get'](robjects.r['load'](filename)) 
    df = pandas2ri.ri2py(r_data) 
    return df 

# write pandas dataframe to an .RData file 
def save_rdata_file(df, filename): 
    r_data = pandas2ri.py2ri(df) 
    robjects.r.assign("my_df", r_data) 
    robjects.r("save(my_df, file='{}')".format(filename)) 
    os.chmod(filename, 0o777)