我看过多个帖子,但聚合是在多个列上完成的,但我希望基于col OPTION_CD进行聚合,基于以下 condition: If have conditions attached to the dataframe query, which is giving me the error 'DataFrame' object has no attribute '_get_object_id'
IF NULL(STRING AGG(OPTION_CD,''按OPTION_CD排序),'') . 我能理解的是,如果OPTION_CD col为null,则放置一个空白,然后将OPTION_CD附加到一行中用空格分隔 . 以下是示例表:
首先是过滤从COl 1只获得1和2,然后结果应该是这样的:
以下是我在数据帧上编写的查询
df_result = df.filter((df.COL1 == 1)|(df.COL1 == 2)).select(df.COL1,df.COL2,(when(df.OPTION_CD == "NULL", " ").otherwise(df.groupBy(df.OPTION_CD))).agg( collect_list(df.OPTION_CD)))
但没有得到预期的结果 . 任何人都可以帮助吗?我正在使用pyspark .
1 回答
你没有清楚地表达你的问题,但我会尽力回答 .
您需要了解数据框列只能为所有行提供一种数据类型 . 如果初始数据是整数,那么您不能检查字符串与空字符串的相等性,而是使用Null值 .
收集列表也返回一个整数数组,因此你不能在一行中有[7,5]而在另一行中有“'” . 这对你有用吗?