我不确定我是否以正确的方式询问此问题,但是我在理解如何解压缩可能是列表类型的字典键值时遇到困难。
我基本上想要实现的是拥有一个可以将PySpark中的数据帧分组的函数,但是聚合条件中可以包含多个值。
def readfilegrouped(**groupargs):
"""Group the dataframe based on the conditions"""
dfgrouped = groupargs['groupingdf'].groupBy(groupargs['aggcol']).agg(groupargs['aggcond'])
return dfgrouped
在上面的函数中,我希望能够通过多个条件进行聚合。如下所述:
groupargs = {'groupingdf':members, 'aggcol':"MEMBERID", 'aggcond':F.countDistinct(F.col("MEMBERID")).alias("DISTINCT_MEMBERID"), F.sum(F.col("TRANSACTIONS")).alias("TOTALTRANSACTIONS")}
membersgrouped = readfilegrouped(**groupargs)
成员表:
MEMBERID TRANSACTIONS DATE
M1 2 01/01
M1 3 01/02
M2 5 02/01
M3 1 01/01
M3 2 01/02
我正在寻找的结果:
MEMBERID DISTINCT_MEMBERID TOTALTRANSACTIONS
M1 1 5
我最接近的是使用defaultdict
来执行此操作,但是我不确定如何在调用函数时正确定义它。任何帮助将不胜感激。