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函数,它应该得到金,铜和银的平均值。在上面的例子中,我只使用了金柱。请帮我修复错误。
答案 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,并且具有自己的矢量化函数。因此,可以直接调用它们,就像上面的答案一样。
请阅读上段中链接的文档以获取更多信息。