在Pandas中是否有一种方法可以在dataframe.apply中使用先前的行值,而在apply中也计算先前的值?

时间:2019-01-12 13:31:21

标签: python pandas

我有以下数据框:

      W    Y
 0    1    5
 1    2    NaN
 2    3    NaN
 3    4    NaN
 4    5    NaN
 5    6    NaN
 6    7    NaN
 ...

由于表行一直持续到索引240。我想获取以下数据框:

      W    Y
 0    1    5
 1    2    7
 2    3    10
 3    4    14
 4    5    19
 5    6    27
 6    7    37
 ...

请注意,W的值是任意的(只是为了使此处的计算更容易,实际上它们在我的真实程序中为np.random.normal)。
或换句话说:
如果Y索引为0,则Y的值为5;
如果Y索引在1-4之间(包括),则Y_i是Y中前一个元素与W中当前元素的和。
如果Y索引> = 5,则Y的值为:Y_ {i-1} + Y_ {i-4}-Y_ {i-5} + W_i

使用iipr答案,我已经设法通过运行以下命令来计算前五个值:

def calculate(add):
    global value
    value = value + add
    return value

df.Y = np.nan
value = 5
df.loc[0, 'Y'] = value
df.loc[1:5, 'Y'] = df.loc[1:5].apply(lambda row: calculate(*row[['W']]), axis=1)

但是我没有设法计算其余值(其中index> = 5)。
有人有建议吗?

1 个答案:

答案 0 :(得分:2)

在这种情况下,我不建议使用pageUrl: { hostEquals: 'www.google.com', schemes: ['https'] }
为什么不简单地对每个不同定义的范围使用两个循环:

apply

这很简单,下周您仍然知道代码的作用。

相关问题