2016-08-09 11 views
0
from pandas import DataFrame,Series 
import numpy 

def avg_bronze_medal(): 
    countries=['Russian Fed','Norway','Canada'] 
    gold=[13,11,10] 
    silver=[11,5,10] 
    bronze=[9,10,5] 
    medal_counts={'country_name':Series(countries),'gold':Series(gold),'silver':Series(silver),'bronze':Series(bronze)} 
    df=DataFrame(medal_counts) 
    print df 
    print df['gold'].apply(numpy.mean, axis=1) 

最後の行は「範囲外タプルインデックスはIndexError」としてエラーを与えています。データフレームにapply関数を使用する必要があり、金、銅、銀の平均値を取得する必要があります。上記の例では、私は金の列だけを使用しました。エラーを修正するのに手伝ってください。パイソン(numpyの) - DFエラーを適用する - はIndexError:タプルインデックス範囲外

+1

'df ['gold']。平均()' – Julien

+0

これを試してください: 'df.drop(['country_name']、1).mean()' – MaxU

+0

または、 'axis' kwagを削除するか、 0 ... – Kartik

答えて

0

同時にすべての3つの列の平均値を取得するには:

df[['gold', 'bronze', 'silver']].mean(axis=1) 

しかし、それはあなたがトーナメントで受賞平均メダルを必要とする理由として私を混乱させる...しかし、私はあなたがそれを必要と推測何らかの理由で!


OPが知っておくべきいくつかの追加の注意事項

.applyは、行または列(デフォルト)上で動作する方法です。 df.apply(func)関数に呼び出すと、funcがすべての列に一度に1列ずつ適用されます。 df.apply(func, axis=1)は、一度に1つずつすべての行にfuncを適用します。 pd.Seriesの場合は1列しかないので、.applyは常に行に作用します。 .applyは、行または列に適用する必要があるcomplex custom functionがある場合に便利です。合計、平均、標準偏差などのいくつかの統計的尺度はcommonであり、独自のベクトル化された関数を持っています。したがって、上記の答えのように直接呼び出すことができます。

詳細については、上記のリンク先のドキュメントをお読みください。

関連する問題