我在Databricks笔记本中编写R代码,执行多个R操作。当数据框清理完毕后,我想使用“%python”在Python单元格中调用它,并因此使用Python代码继续操作数据框。
因此,我希望在Python块中将我的R Dataframe转换为Pandas dataframe。有人知道如何做到这一点吗?谢谢!
我在Databricks笔记本中编写R代码,执行多个R操作。当数据框清理完毕后,我想使用“%python”在Python单元格中调用它,并因此使用Python代码继续操作数据框。
因此,我希望在Python块中将我的R Dataframe转换为Pandas dataframe。有人知道如何做到这一点吗?谢谢!
在Databricks上,我认为不同内核之间的命名空间是独立的。因此,即使在同一个笔记本中,您也无法在Python中看到R变量或反之亦然。
我的理解是有两种方法可以在内核之间共享数据:1)使用文件系统(csv等),2)使用临时的Databricks表格。 我相信后者是更典型的路径[1]。
%r
write.csv(df, "/FileStore/tmp.csv")
%python
import pandas as pd
df = pd.read_csv("/FileStore/tmp.csv")
%r
library(SparkR)
sparkR.session()
df <- read.df("path/to/original_file.csv", source="csv")
registerTempTable(df, "tmp_df")
%python
df = spark.sql("select * from tmp_df").toPandas()
import rpy2.robjects as ro
dt = pd.DataFrame()
转换为 R DataFrame
r_dt = ro.conversion.py2rpy(dt)
转换为pandas DataFrame
pd_dt = ro.conversion.rpy2py(r_dt)
df <- as.DataFrame(df)
createOrReplaceTempView(df, "df")
import pyspark
from pyspark.sql import SparkSession
# Create a SparkSession
spark = SparkSession.builder.appName("Temp View").getOrCreate()
# Import the temp view
df_pandas = spark.sql("SELECT * FROM df")