使用同一列的前一行更新Pandas列的行

2024-04-19 22:52:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下列的Pandas数据框:

blocked, rolling_mean, cumulative_i

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

c_U(i)=最大值(0,阻塞的_i-(滚动平均值_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])

有没有一种更像Python的方法?在

编辑:

我试着做以下事情。在

^{pr2}$

Sample vectorised output and expected output

在第三行向量化输出下。如果不加上前面的值,那么213.72等于。在

这是我期望的输出,如果我只是做

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

Tags: 数据inpandasdfforifrangemean