Pandas下的group by操作速度慢,在百万级数据量下可以使用PyFunctional下的group by,千万级速度又吃不消了,可以借助numpy,但实现有点麻烦,记录一下。
一、问题描述
【推荐场景】输入二维数组a,千万行,3列,第一列是用户id,第二列是物品id,第三列是分值。先计算每个用户下分值最高的物品(Top1推荐),然后按照物品将这些用户组合起来(推送名单)。
二、实现代码
a = a[a[:, 0].argsort()] # 按照user_id排序(排序是使用np.split进行分组的前提)
a = np.spl