2017-09-18 16 views
0

私はカラム上にある演算子を使ってgroupbyを実行したいsframeを持っています。しかし、これはkey列が指定されたsframeだけを返します。それでも、いくつかの列で操作を行うことはできますが、それにもかかわらずすべての列を保持できますか?Graphlab Sframes - groupby内のすべての列を保持する方法

答えて

1

あなたの質問から私が理解している限り、初期状態を失うことなく列の操作をしたいと思っています。以下の例で説明します。我々はSFrame SFとしてのムービーデータセットがあるとします - 上記SFrameで

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 
. 
. 
... 

を、ユーザ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()メソッドを使用して列を追加するか、見つかったSFrameにjoinを使用することもできますが、元のSFrameを変更しないでください。

また、SFrameのactorsのような列の複数のエンティティの場合、データを操作する前にgroupby()を使用する前に、簡単にする方法がstackメソッドを使用していることに注意してください。私はそれが助けて欲しい

関連する問題