Python(Numpy) - df应用错误 - IndexError:元组索引超出范围

时间:2016-08-09 03:53:03

标签: python pandas numpy data-science

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函数,它应该得到金,铜和银的平均值。在上面的例子中,我只使用了金柱。请帮我修复错误。

1 个答案:

答案 0 :(得分:0)

同时获得所有三列的平均值:

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

但令我困惑的是你为什么需要在锦标赛中获得的平均奖牌...但我想你出于某种原因需要它!

OP应该注意的一些附加说明:

.apply是一种适用于行或列的方法(默认)。如果您致电df.apply(func)该功能,func将应用于所有列,一次一列。 df.apply(func, axis=1)会将func应用于所有行,一次一个。对于pd.Series,因为只有一列,.apply始终适用于行。如果您需要将complex custom function应用于行或列,.apply非常有用。一些统计量度,例如和,均值,标准差,是common,并且具有自己的矢量化函数。因此,可以直接调用它们,就像上面的答案一样。

请阅读上段中链接的文档以获取更多信息。