pandas 中聚合分组功能的使用问题

假设我有一个ratings=pd.DataFrame(),数据如下

代码:

ratings = pd.DataFrame([[1,2,3],[2,3,4],[3,4,5],[1,3,4],[1,4,5],[6,7,3],[3,8,1],[5,9,2]], columns=['userID','itemID','rating'])
ratings['label']= ratings['rating']
ratings['label'][ratings['rating']>=4] = 1.0
ratings['label'][ratings['rating']<4] = 0.0

如果想实现以下数据分组

我可以通过

interact_status = ratings.groupby('userID')['itemID'].apply(set).reset_index().rename(
            columns={'itemID': 'interacted_items'})

来实现上述结果

现在我想实现以下的数据分组,将itemID和rating用列表整合(以userID=1为例),这个问题我不知道怎么解决

希望有懂pandas使用的朋友解答一下,不甚感激!

Jason990420
最佳答案

[itemID, rating] 与 groupby 无关, 所以我就先建了一个栏位, 再来 groupby.

ratings['interacted'] = ratings.apply(lambda row:[row.itemID, row.rating], axis=1)
interacted_status = ratings.groupby('userID')['interacted'].apply(list).reset_index().rename(
            columns={'itemID': 'interacted'})
3年前 评论
学好pandas (楼主) 3年前
讨论数量: 1
Jason990420

[itemID, rating] 与 groupby 无关, 所以我就先建了一个栏位, 再来 groupby.

ratings['interacted'] = ratings.apply(lambda row:[row.itemID, row.rating], axis=1)
interacted_status = ratings.groupby('userID')['interacted'].apply(list).reset_index().rename(
            columns={'itemID': 'interacted'})
3年前 评论
学好pandas (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!