如何创建包含user_id与artist_id组合出现次数的新列?
解决方法
你可以用pandas的transform方法实现需求,它能把分组聚合的结果广播回原数据的每一行,完美匹配你要的效果:
# 新增一列存储组合出现次数,用size统计分组行数(比count更准确,不受空值影响) treino['组合出现次数'] = treino.groupby(['user_id', 'artist_id']).transform('size')
为什么原来的方法不行?
你之前用的treino.groupby(['user_id', 'artist_id']).count()会返回一个分组聚合后的DataFrame,每个user_id+artist_id组合只占一行,无法直接和原数据的多行结构对应。而transform会保留原数据的行数,自动把每个分组的统计值填充到该分组的所有行中。
比如当user_id=0且artist_id=10的组合出现5次时,这5行的组合出现次数列都会被填充为5,完全符合你的要求。
内容的提问来源于stack exchange,提问作者Matheus Silveira
相关产品推荐
相关产品推荐

