我有一个日期级别的促销数据框,看起来像这样:
| 识别号|日期|晋升|转换为客户|
| - ------|- ------|- ------|- ------|
| 1个|1月2日|第二章|无|
| 1个|1月10日|三个|1个|
| 1个|1月14日|三个|无|
| 第二章|1月10日|十九|1个|
| 第二章|1月10日|八个|无|
| 第二章|1月10日|十二|无|
现在,我想看看将某人转换为客户所需的促销次数。例如,将ID 1转换为客户所需的促销次数为(2 + 3),将ID 2转换为客户所需的促销次数为(19)。
例如:
| 识别号|日期|
| - ------|- ------|
| 1个|五个|
| 第二章|十九|
我想不出解决这个问题的办法,你能帮帮我吗?
@Corralian和mozway已经用Python帮助解决了这个问题,但是我无法在Pyspark中实现它,因为 Dataframe 太大了(〉1TB)。
3条答案
按热度按时间50few1ms1#
您可以用途:
5uzkadbs2#
使用一个
groupby
生成掩码以隐藏行,然后使用一个groupby.sum
生成总和:输出:
备选输出:
输出:
如果您可能具有未转换为客户的组,则可能还需要聚合""列作为指示符:
输出:
替代输入:
6ojccjat3#
您希望按ID进行计算,因此groupby ID似乎比较合适,例如
现在编写一个单独的函数agg_fct,它计算只包含一个ID的 Dataframe 的结果。假设数据按日期排序,我猜
好的。你可能需要做一些调整,以防客户从未被转换。