Graphlab Sframes - 如何保留groupby中的所有列

时间:2017-09-18 11:08:42

标签: graphlab sframe

我有一个sframe,我想在列上使用某个运算符进行groupby。但是,这仅返回指定了键列的sframe。如何对某些列进行操作,但仍保留所有列?

1 个答案:

答案 0 :(得分:1)

根据我的理解,您希望在不失去初始状态的情况下对列进行操作。以下示例可以说明。假设我们有一个电影数据集作为SFrame sf: -

movieId    userId    actors    rating
102        10        A,B,C      5
204        8         B,C,D      4
333        3         K,L,M      3
204        11        P,Q,R      1
423        3         K,B,C      4    
533        31        K,A,C      2    
633        3         P,L,A      3
.
.
...

在上面的SFrame中,用户3给出了多个评分,因此您可以将用户的评分意味着作为

 rating_stats = sf.groupby(key_columns='userId',operations {'mean_rating': agg.MEAN('rating')})

然后,您可能希望在SFrame中添加找到的列而不影响已存在的列,即您可以保留SFrame。

sf['mean_rating'] = rating_stats['mean_rating']

您会发现sf不受影响,您添加了一个新列。

现在回答您的问题可能是,如果您使用groupby()方法,最好有一个单独的SFrame,您特定于该操作,并且您可以进一步使用或添加到原始SFrame,或者也许可以使用groupby()方法将其余列合并到您找到的SFrame中,或者也可以在找到的SFrame上使用join,但不要将原始SFrame更改为操作。

另请注意,对于列中的多个实体(如SFrame中的actors),在使用stack操作数据之前,使用groupby()方法可以简化方法。我希望有所帮助。