如果问题标题有点混乱,我很抱歉。我是新来的pyspark,正在处理以下问题:
假设我有一个包含日期、产品和total_orders三列的 Dataframe ,并且我有一个为期3天的 Dataframe 。
date product orders
2022-01-01 whisky 11
2022-01-01 rum 100
2022-01-01 bourbon 5
2022-01-02 whisky 20
2022-01-02 rum 150
2022-01-02 bourbon 7
2022-01-03 whisky 30
2022-01-03 rum 7
2022-01-03 bourbon 3
我想过滤掉最大订单数小于10的任何产品。因此,在上面的 Dataframe 中,所有包含波旁威士忌作为产品的行都将被过滤掉,因为max(orders of bourbon)〈10。
输出量:
date product orders
2022-01-01 whisky 11
2022-01-01 rum 100
2022-01-02 whisky 20
2022-01-02 rum 150
2022-01-03 whisky 30
2022-01-03 rum 7
什么是最好的方法去做它?我一直在寻找int窗口函数在pyspark,但一直未能得到它的权利。
我已经创建了一个类似于下面的窗口规范。
windowSpec = Window.partitionBy(groupedDf['product']).orderBy(groupedDf['orders'].desc())
但在过滤 Dataframe 行时遇到问题。
3条答案
按热度按时间3hvapo4f1#
您可以先找出每个
product
的max orders
,然后根据该值进行筛选。vlurs2pr2#
这只是窗口函数的情况。
q3qa4bjr3#
PySpark
DataFrame提供了一个方法toPandas()
将其转换为Python
Pandas.DataFrame
,然后,首先将其转换为...您可以使用
loc
来使用简单的pandas
条件索引: