2017-01-16 4 views
1

の値に基づいて、1列の複数のセルの値を選択しますので、私のデータは、パンダでは、次のようになります。Pythonのパンダ:別の列

values variables 
134  1 
12  2 
43  1 
54  3 
16  2 

そして、私は和である新しい列を作成したいですvariablesの残りがvariablesの現在の行の変数と等しくないときはいつでも、valuesの値を返します。たとえば、最初の行については、のすべての行をvaluesの合計にしたいと考えています。結果は次のようになります。

values variables result 
    134  1  82 
    12  2  231 
    43  1  82 
    54  3  205 
    16  2  231 

私は、列挙のようなカップルの事を試してみたが、私はこれには良いのハンドルを取得するように見えることはできません。ありがとう!

答えて

3

代わりに、現在の変数に等しくないすべての値の合計を見つけるのは、同等の任意のフィルタなし合計から現在の変数に等しいすべての値の合計を引くことができます。

df['result'] = df['values'].sum() 
df['result'] -= df.groupby('variables')['values'].transform('sum') 

または単一のラインであなたが簡潔になりたい場合:

df['result'] = df['values'].sum() - df.groupby('variables')['values'].transform('sum') 

結果の出力:

values variables result 
0  134   1  82 
1  12   2  231 
2  43   1  82 
3  54   3  205 
4  16   2  231 
関連する問題