如何在pyspark中将字段从父 Dataframe 取到其子帧中

xn1cxnb4  于 2023-01-12  发布在  Spark
关注(0)|答案(1)|浏览(143)

我一直在工作的json ro flattened它。我已经flattemed json和得到所有的fields
我有一个父数据集与4列:---名字,姓氏,gmail,年龄
以及使用过滤器(过滤最高年龄Age)和分组依据(GMAIL分组)从父子集提取的子子集。
现在列我得到的子集是:-最大年龄
最大年龄和gmail
现在我想要的是使用下面的子集,我想要从父集中提取子集中存在的所有列
这怎么能做到呢......提前感谢

nnsrf1az

nnsrf1az1#

您可以根据“年龄”和“gmail”加入
考虑以下 Dataframe :

df = spark.createDataFrame([["Amy","Santiago", 32, "good99@gmail.com"],["Rosa", "Dias", 31,"good99@gmail.com"],["Norm", "Skully", 50,"bad99@gmail.com"]]).toDF("Name", "LastName", "Age", "Gmail");

这样就行了

df_agg = df.alias("df1")\
.join(df.groupBy("gmail").agg(F.max("Age").alias("Age")).alias("df2"), F.col("df1.Age").eqNullSafe(F.col("df2.Age")) & F.col("df1.Gmail").eqNullSafe(F.col("df2.Gmail")))\ # Join
.selectExpr("df1.*")\ # Select only Df1 columns
.show()

输出:

相关问题