0

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

4

1 回答 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 来操作并不是一个好习惯。

另外,请注意,对于像在actorsSFrame 中的列中的多个实体,可以使事情变得简单的方法是在使用stack方法之前groupby()对数据进行操作。我希望这会有所帮助。

于 2017-09-20T06:19:45.627 回答