| 時間 | 聚合 | 價值 | 需要的價值 |
|---|---|---|---|
| 10:55:00 | 178.0 | 322.0 | 322 |
| 11:00:00 | 354.0 | —— | (322-354)-32 |
| 11:05:00 | 354.0 | —— | (-32-354)-386 |
| 11:10:00 | 354.0 | —— | (-386-next Agg nu) |
如何計算所需的值欄位,
對于第一行,它采用原樣的值欄位,
對于第 2 行,它需要第 2 行所需的值 - 第 3 行 Agg 值
對于第 3 行,第 3 行需要值 -4 行 agg
uj5u.com熱心網友回復:
用于cumsum獲得 的累積總和Agg,然后減去Value:
first_val = float(df['Value'].iloc[0])
df['Needed'] = first_val - df['Agg'].iloc[1:].cumsum()
df['Needed'] = df['Needed'].fillna(first_val)
輸出:
Time Agg Value Needed Value Needed
0 10:55:00 178.0 322.0 322 322.0
1 11:00:00 354.0 - (322-354)-32 -32.0
2 11:05:00 354.0 - (-32-354)-386 -386.0
3 11:10:00 354.0 - (-386-next Agg nu) -740.0
uj5u.com熱心網友回復:
為了提高性能使用 numba:
from numba import jit
@jit(nopython=True)
def f(a, b):
d = np.empty(a.shape)
d[0] = b[0]
for i in range(1, a.shape[0]):
d[i] = d[i-1] - a[i]
return d
df['Needed Value'] = f(df['Agg'].to_numpy(), df['Value'].to_numpy())
print (df)
Time Agg Value Needed Value
0 10:55:00 178.0 322.0 322.0
1 11:00:00 354.0 NaN -32.0
2 11:05:00 354.0 NaN -386.0
3 11:10:00 354.0 NaN -740.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/369009.html
