[英]Python(Numpy)- df apply error - IndexError: tuple index out of range
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函數,它應該獲得金,銅和銀列的平均值。 在上面的示例中,我僅使用了金柱。 請幫助我修復錯誤。
要同時獲取所有三列的平均值:
df[['gold', 'bronze', 'silver']].mean(axis=1)
但這使我感到困惑,為什么您需要比賽中獲得的平均獎牌...但是我想您出於某些原因需要它!
OP應注意的一些其他注意事項:
.apply
是一種適用於行或列的方法(默認)。 如果您調用df.apply(func)
函數,則func
將應用於所有列,一次應用於一列。 df.apply(func, axis=1)
會將func
應用於所有行。 對於pd.Series
因為只有一列, .apply
始終對行起作用。 如果您需要將復雜的自定義函數應用於行或列,則.apply
很有用。 一些統計量度(例如總和,均值,標准差)很常見,並且具有自己的矢量化功能。 因此,可以像上面的答案一樣直接給他們打電話。
請閱讀上一段中鏈接的文檔以獲取更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.