【发布时间】:2017-12-13 15:10:25
【问题描述】:
我有以下数据框,首先为每个队列计算以下数学运算 year+n/year.value==2009,然后为每个队列执行平均值
df
id
year 2009 2010 2011 2012 2013 2014 2015
cohort
2009.0 72092.0 60513.0 48797.0 40968.0 34919.0 30452.0 26961.0
2010.0 NaN 73735.0 61899.0 50263.0 42184.0 36150.0 31516.0
2011.0 NaN NaN 76809.0 64093.0 51372.0 43277.0 36994.0
2012.0 NaN NaN NaN 69776.0 57621.0 46453.0 39098.0
2013.0 NaN NaN NaN NaN 71613.0 58996.0 47657.0
2014.0 NaN NaN NaN NaN NaN 65430.0 52540.0
2015.0 NaN NaN NaN NaN NaN NaN 67121.0
2016.0 NaN NaN NaN NaN NaN NaN NaN
2017.0 NaN NaN NaN NaN NaN NaN NaN
我将展示我想要执行的数学运算,因为我的英语不好而且数学是一种通用语言:)
对于自 2009 年以来经过 1 年的时间:(n=1)
需要的第一个值 = ((60513.0/72092.0) + (61899.0/73735.0) + (64093.0+76809.0) + (57621.0/69776.0) + (58996.0+71613.0) + (52540.0/65430.0))/6
对于自 2009 年以来经过 2 年的时间:(n=2)
需要的第二个值 = ((48797.0/72092.0) + (50263.0/73735.0) + (51372.0/76809.0) + (46453.0/69776.0) + (47657.0/71613.0))/5
对于自 2009 年以来的任何 3 年过去:(n=3)(最后一个,我认为有了这个,我想要做的循环就会被理解)
需要第三个值 = ((40968.0/72092.0) + (42184.0/73735.0) + (43277.0/76809.0) + (39098.0/69776.0))/4
以此类推,直到最后一个值为
最后一个值 = 26961.0/72092.0
在此先感谢,对不起我的英语
我正在尝试这样的事情,也许它可以帮助
第一个值:
((df1.iloc[0,1]/df1.iloc[0,0]) + (df1.iloc[1,2]/df1.iloc[1,1]) +
(df1.iloc[2,3]/df1.iloc[2,2]) + (df1.iloc[3,4]/df1.iloc[3,3]) +
(df1.iloc[4,5]/df1.iloc[4,4]) + (df1.iloc[5,6]/df1.iloc[5,5]))/6
第二个值:
((df1.iloc[0,2]/df1.iloc[0,0]) + (df1.iloc[1,3]/df1.iloc[1,1]) +
(df1.iloc[2,4]/df1.iloc[2,2]) + (df1.iloc[3,5]/df1.iloc[3,3]) +
(df1.iloc[4,6]/df1.iloc[4,4]))/5
第三个值:
((df1.iloc[0,3]/df1.iloc[0,0]) + (df1.iloc[1,4]/df1.iloc[1,1]) +
(df1.iloc[2,5]/df1.iloc[2,2]) + (df1.iloc[3,6]/df1.iloc[3,3]))/4
等等……
类似这样的东西,但有一个循环,这是我正在寻找的代码。
【问题讨论】:
-
您能否打印
df.to_dict()并将其粘贴到您的问题中?否则,很难重现此数据帧。
标签: python python-3.x pandas numpy