使用相同列的先前行更新Pandas列的行

时间:2015-03-31 03:31:49

标签: python numpy pandas

我有一个Pandas数据框,其中包含以下列:

  

已屏蔽,rolling_mean,cumulative_i

我尝试创建一个新列,其中:

c_(i)= max(0,blocked_i - (rolling_mean_i + k)+ c_(i-1)) - 其中k = 2

我目前的做法是:

    for i in range(df.shape[0]):
        if i > 1:
            df.ix[i, 'cumulative_i'] = max(0, df['blocked'].iloc[i] -(df['rolling_mean'].iloc[i] + k) + df['cumulative_i'].iloc[i - 1])

有更多的pythonic方式吗?

修改

我尝试过以下操作。

    df['cumulative_i'] = np.maximum(0, df['blocked'] - (df['rolling_mean'] + k) + df['cumulative_i'].shift())

Sample vectorised output and expected output

在vectorised_output下的第三行。如果我们不加上先前的值213.72(即367.2 - 213.72 = 153.48),则值153.48就是人们得到的值。

如果我只做

,这是我期望的输出
df['cumulative_i'] = np.maximum(0, df['blocked'] - (df['rolling_mean'] + k))   

0 个答案:

没有答案