我有一个 sframe,我想在列上使用一些运算符进行 groupby。但是,这仅返回指定关键列的 sframe。如何对某些列进行操作,但仍保留所有列?
问问题
157 次
1 回答
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,或者可能将其余列合并到您找到的SFrame 使用groupby()
方法或者你也可以join
在找到的 SFrame 上使用,但是不断改变原来的 SFrame 来操作并不是一个好习惯。
另外,请注意,对于像在actors
SFrame 中的列中的多个实体,可以使事情变得简单的方法是在使用stack
方法之前groupby()
对数据进行操作。我希望这会有所帮助。
于 2017-09-20T06:19:45.627 回答