Search code examples
rpandasdataframeexporttransfer

Transfer in R dataframe in a list to Python Pandas


How can I transfer these 5 simulated datasets that I saved as a dataframe in a list in R to python in similar format (as pandas dataframe in a list) ?

library(MASS)
library(stats)

generateData<- function(n,p) {
sigma <- diag(p)
sigma <- replace(sigma, sigma == 0, 0.3)
mu= rep(0,nrow(sigma))
X <- mvrnorm(n, mu = mu, Sigma = sigma)
vCoef = rnorm(ncol(X))
vProb =exp(X%*%vCoef)/(1+exp(X%*%vCoef))
Y <- rbinom(nrow(X), 1, vProb)
data= data.frame(cbind(X,Y))
return(data)
}

######################################################
# SIMULATED DATA
######################################################
n <- 100
p <- 50
nsim <- 5
data <- list()

for (k in 1 : nsim ) {
mydata <- generateData(n , p)
data[[k]] <- mydata
}

Solution

  • You could iterate through the list and save the unique dataframes into an .xls file using different sheets. Then on Python create a list, read the sheets using pandas and finally append them to a list in order to obtain the same structure.

    So in R:

    library(xlsx)
    
    for(i in seq(length(data))){
        write.xlsx(data[[i]], file="filename.xls", sheetName=paste0("data",i), row.names=F, append=T)
    }
    

    While in Python:

    import pandas as pd
    
    data = list()
    for i in range(5):
        sheet = "data"+str(i+1)
        data.append(pd.read_excel("filename.xls", sheet_name=sheet))