gpt4 book ai didi

python - 如何在 pyspark 中使用具有多个条件的 join?

转载 作者:行者123 更新时间:2023-12-01 02:40:03 27 4
gpt4 key购买 nike

我可以使用带有单个条件的数据帧连接语句(在pyspark中)但是,如果我尝试添加多个条件,那么它就会失败。

代码:

   summary2 = summary.join(county_prop, ["category_id", "bucket"], how = "leftouter").

上面的代码有效。但是,如果我为列表添加一些其他条件,例如 Summary.bucket == 9 或其他条件,则会失败。请帮我解决这个问题。

   The error for the statement 
summary2 = summary.join(county_prop, ["category_id", (summary.bucket)==9], how = "leftouter")

ERROR : TypeError: 'Column' object is not callable

编辑:

添加完整的工作示例。

   schema = StructType([StructField("category", StringType()), StructField("category_id", StringType()), StructField("bucket", StringType()), StructField("prop_count", StringType()), StructField("event_count", StringType()), StructField("accum_prop_count",StringType())])
bucket_summary = sqlContext.createDataFrame([],schema)

temp_county_prop = sqlContext.createDataFrame([("nation","nation",1,222,444,555),("nation","state",2,222,444,555)],schema)
bucket_summary = bucket_summary.unionAll(temp_county_prop)
county_prop = sqlContext.createDataFrame([("nation","state",2,121,221,551)],schema)

想要加入:

category_id和bucket列,我想替换bucket_summary上county_prop的值。

   cond = [bucket_summary.bucket == county_prop.bucket, bucket_summary.bucket == 2]

bucket_summary2 = bucket_summary.join(county_prop, cond, how = "leftouter")

   1. It works if I mention the whole statement with cols, but if I list conditions like ["category_id", "bucket"]  --- THis too works.

2. But, if I use a combination of both like cond =["bucket", bucket_summary.category_id == "state"]

它不工作。 2 语句可能会出现什么问题?

最佳答案

例如

df1.join(df2, on=[df1['age'] == df2['age'], df1['sex'] == df2['sex']], how='left_outer')

但就您而言,(summary.bucket)==9 不应显示为加入条件

更新:

连接条件中,您可以使用列连接表达式列表或列/column_name列表

关于python - 如何在 pyspark 中使用具有多个条件的 join?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45812537/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com