我有一个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']})
我想创建一个新的列max
,该value
列的由分组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'))
但是我最终失去了一些行。
有任何想法吗 ?
使用when
功能进行条件汇总max
:
from pyspark.sql import Window
from pyspark.sql import functions as F
w = Window.partitionBy('id')
foo = foo.withColumn('max_value', F.max(F.when(F.col('col') == F.col('col_b'), F.col('value'))).over(w))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句