引言
在数据分析过程中,时常需要在python中的dataframe和spark内的dataframe之间实现相互转换。另外,pyspark之中还需要实现rdd和dataframe之间的相互转换,具体方法如下。
1、spark与python Dataframe之间的相互转换
import pandas as pd
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("DataFrame").getOrCreate()
# 创造pandas DataFrame
df = pd.DataFrame([["jack",23], ["tony", 34]], columns = ["name", "age"])
取出值,并转换成list的两种方式
df_values = df.values.tolist()
df_columns = list(df.columns)
#将pandas.DataFrame 转换成 spark.dataFrame
spark_df = spark.createDataFrame(df_values, df_columns)
spark_df.show()
# 将spark.dataFrame 转换成 pandas.Dataframe
pd_df = spark_df.toPandas()
type(spark_df)
type(pd_df)
参考资料:https://blog.csdn.net/luoganttcc/article/details/80631922
2、pyspark中Dataframe与rdd之间的相互转换
# 1、生成pandas.DataFrame
import pandas as pd
data = {
"name": ["jack", "tom", "tina", "trump"],
"age": [12, 34, 34, 25]
}
pd_df = pd.DataFrame(data)
# 2、将pd.DataFrame转换成spark.Dataframe
df_values = pd_df.values.tolist()
df_columns = list(pd_df.columns)
spark_df = spark.createDataFrame(df_values, df_columns)
spark_df.show()
# 3、将spark.Dataframe转换成rdd
rdd_1 = spark_df.rdd
print(rdd_1.collect())
# 4、将rdd转换成让spark.Dataframe
sp_df = spark.createDataFrame(rdd_1)
sp_df.show()
网友评论