計算

2016-12-22 6 views
1

ターゲット計算

私はほんの数日間パンダを使用していると、複数の列の平均値を計算するために.loc.mean()を使用しようとしています、と表現します列の下の新しい行の値。


私の試みは

単一の列の平均を見つけ、次のコードを使用して...:

df.loc['Average', 'Column1'] = df['Column1'].mean() 

は^ ...出力としてあります期待される。しかし


、私のような、の平均値を見つけるために、追加の列を追加しようとすると:

KeyError: ('Column1', 'Column2') 

私が想定している:私は次のエラーを取得する

df.loc['Average', 'Column1', 'Column2'] = df['Column1', 'Column2'].mean() 

を非常に簡単な解決策があります - 私はこの段階でかなり新しいです。


予想される出力

# ...... is replaced with numbers 

      Column1  Column2 
1   .......  ....... 
2   .......  ....... 
3   .......  ....... 
...   .......  ....... 
Average  #SomeFloat #AnotherFloat 

答えて

2

あなたは、リスト内の複数の列名をラップする必要があります。

df.loc['Average', ['Column1', 'Column2']] = df[['Column1', 'Column2']].mean() 
+0

大変ありがとうございます。そうする必要がある理由はありますか? – LearningToPython

+1

はい。あなたがそれをしなければ、これはタプルとして扱われ、したがって、pythonのように、パンダの複数のインデックスは、カンマがタプルを作成します。これがkeyErrorを見る理由です。つまり、 '(Column1、Column2)'はマルチインデックスとして扱われ、データフレームには存在しません。 – Psidom

+0

ありがとう、素晴らしい説明:) – LearningToPython

1

は単一入力で動作を意味します。おそらく、あなたが望む結果を得るための最も直接的な方法は、列のリストを使用することです:

df[['Column1', 'Column2']].mean() 

また、それらを個別に計算し、それらの手段を追加し、2で割るが、それはより多くのタイピングだ可能性があります。