【发布时间】:2021-01-16 02:28:24
【问题描述】:
我有一个spark 数据框
import pandas as pd
foo = pd.DataFrame({'id': [1,1,2,2,2], 'col': ['a','b','a','a','b'], 'value': [1,5,2,3,4],
'col_b': ['a','c','a','a','c']})
我想用value 列的max 创建一个新列,按id 分组。但我只希望 max value 用于 col==col_b 的行
我的结果 spark 数据框应该是这样的
foo = pd.DataFrame({'id': [1,1,2,2,2], 'col': ['a','b','a','a','b'], 'value': [1,5,2,3,4],
'max_value':[1,1,3,3,3], 'col_b': ['a','c','a','a','c']})
我试过了
from pyspark.sql import functions as f
from pyspark.sql.window import Window
w = Window.partitionBy('id')
foo = foo.withColumn('max_value', f.max('value').over(w))\
.where(f.col('col') == f.col('col_b'))
但我最终会丢失一些行。
有什么想法吗?
【问题讨论】:
标签: python apache-spark pyspark