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

Graphlab Sframes - How to retain all columns in groupby

我有一个 sframe,我想在其中与列上的某些运算符进行分组。但是,这个 returns 一个仅指定了键列的 sframe。如何对某些列进行操作,但仍然保留所有列?

据我对你的问题的理解,你想在不失去初始状态的情况下对列进行操作。下面的例子可以说明。假设我们有一个电影数据集作为 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 中的列中的多个实体,可以使事情变得简单的方法是在使用 groupby() 对数据进行操作之前使用 stack 方法.希望对您有所帮助。