如何在PySpark中比较来自另一个数据帧的列

2024-10-01 19:24:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧:
首先是平均值:

+----------+-----+  
| Category | AVG |  
+----------+-----+  
| Categ    | 1.0 |  
+----------+-----+  
| Categ2   | 0.5 | 
+----------+-----+
... 


第二个有休闲类别:类别、名称、价格
问题是: 如何从第一个表中删除所有价格低于平均价格的记录??
我试过这样做:

dataGreaterAvge = data.where(data.Price >= avgCategoryPrice.where(data.Category == avgCategoryPrice.Category).collect()[0]["avg(Price)"])

dataGreaterAvge  - First dataframe
data - Second dataframe

但是,这并不能像它应该的那样工作,因为它只从average values表中获取第一个元素的值


Tags: 数据名称dataframedata价格where类别price
1条回答
网友
1楼 · 发布于 2024-10-01 19:24:07

Spark就像SQL一样工作。。。所以

首先,您需要加入数据帧

a = df1.alias('a')
b = df2.alias('b')
df_joined = a.join(b, a.Category == b.Category)

然后你就可以正确地过滤了

from pyspark.sql import functions as f

df_joined.select(col('a.category'),col('a.AVG'))\
         .where(col('a.AVG') > f.avg(col('b.avg')).groupBy(col('a.AVG'))

相关问题 更多 >

    热门问题