微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 如何合并pyspark和pandas数据帧

我有一个非常大的pyspark数据帧和一个较小的pandas数据帧,我读如下:

df1 = spark.read.csv("/user/me/data1/")
df2 = pd.read_csv("data2.csv")

两个数据帧都包括标记为“A”和“B”的列.我想创建另一个pyspark数据帧,只包含来自df1的那些行,其中“A”和“B”列中的条目出现在df2中具有相同名称的那些列中.即使用df2的列“A”和“B”过滤df1.

normally I think this would be a join (implemented with merge) but
how do you join a pandas dataframe with a pyspark one?

我无法将df1转换为pandas数据帧.

解决方法:

您可以在从pandas dataframe转换为pyspark数据帧时传递架构,如下所示:

from pyspark.sql.types import *
schema = StructType([
StructField("name", StringType(), True),
StructField("age", IntegerType(), True)])
df = sqlContext.createDataFrame(pandas_dataframe, schema)

或者您可以使用我在此功能中使用的hack:

def create_spark_dataframe(file_name):
    """
    will return the spark dataframe input pandas dataframe
    """
    pandas_data_frame = pd.read_csv(file_name)
    for col in pandas_data_frame.columns:
      if ((pandas_data_frame[col].dtypes != np.int64) & (pandas_data_frame[col].dtypes != np.float64)):
        pandas_data_frame[col] = pandas_data_frame[col].fillna('')

    spark_data_frame = sqlContext.createDataFrame(pandas_data_frame)
    return spark_data_frame

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐