簡體   English   中英

我如何比較 PySpark 中另一個 dataframe 的列

[英]How i can compare columns from another dataframe in PySpark

我有兩個數據框:
首先是 AVG 值:

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

...
第二個有閑置類別:Category、Name、Price
問題是:如何從第一個表中刪除所有價格低於平均價格的記錄?
我試過這樣:

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

dataGreaterAvge  - First dataframe
data - Second dataframe

但是,這並不能正常工作,因為它只從平均值表中獲取第一個元素的值

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'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM