python - 如何合并 pyspark 和 pandas 数据框

标签 python pandas apache-spark pyspark

我有一个非常大的 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 数据帧转换为 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

关于python - 如何合并 pyspark 和 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46304212/

相关文章:

scala - 如何在 Spark 2.3.0 UDF 中为每个工作人员构建并保留一个引用对象?

scala - Apache Spark - Scala - 如何将 FlatMap (k, {v1,v2,v3,...}) 到 ((k,v1),(k,v2),(k,v3),...)

python - 单击按钮后程序停止响应

python - 我如何告诉 pylint 变量将在运行时定义?

包含整数和字符串的列表的Python排序列表,其中包含整数

python - 组合两个 pandas 数据框,使相同的列索引/标题彼此相邻

python - render_template 中的 Flask 参数

python - 将 Pandas 数据框转换为字典会用空格重命名列标题

python - 根据列(字符串)对 pandas 中的 CSV 进行排序

scala - 如何在Spark中对嵌套的数据框进行平面映射