我有一个sframe,我想在列上使用某个运算符进行groupby。但是,这仅返回指定了键列的sframe。如何对某些列进行操作,但仍保留所有列?
答案 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()
方法可以简化方法。我希望有所帮助。