2016-05-17 10 views
1

これはthis questionに非常に似ていますが、特定の列ではなく、データフレームの長さにコードを適用できるようにしたいという点が異なります。pandas:行小計の新しい列を追加します

私はDataFrameを持っており、各行の合計をデータフレームに列として追加しようとしています。

df = pd.DataFrame([[1,0,0],[20,7,1],[63,13,5]],columns=['drinking','drugs','both'],index = ['First','Second','Third']) 

     drinking drugs both 
First   1  0  0 
Second  20  7  1 
Third   63  13  5 

所望の出力:

 drinking drugs both total 
First   1  0  0  1 
Second  20  7  1  28 
Third   63  13  5  81 

現在のコード:

df['total'] = df.apply(lambda row: (row['drinking'] + row['drugs'] + row['both']),axis=1) 

これは素晴らしい作品。しかし、「飲酒」、「薬」、または「両方」と呼ばれていない、7つの列を持つ別のデータフレームがあればどうでしょうか?この関数をデータフレームの長さに適用するように調整することは可能ですか?そうすれば、「飲酒」、「薬」、「両方」という列を持つデータフレームだけでなく、さまざまな数の列を使用して、あらゆるデータフレームにこの機能を使用することができます。

のような何か:

df['total'] = df.apply(for col in df: [code to calculate sum of each row]),axis=1) 

答えて

2

あなたはsumを使用することができます。

df['total'] = df.sum(axis=1) 

あなたが唯一のいくつかの列、使用のサブセットを合計が必要な場合:

df['total'] = df[['drinking', 'drugs', 'both']].sum(axis=1) 
0

このような何かについて何:出力と

df.loc[:, 'Total'] = df.sum(axis=1) 

Out[4]: 
     drinking drugs both Total 
First   1  0  0  1 
Second  20  7  1  28 
Third   63  13  5  81 

それは行ですべての列を合計します。

関連する問題