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
方法.希望对您有所帮助。
我有一个 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
方法.希望对您有所帮助。