使用 pandas 或 Python 中的 numpy 根据其他三列中的值填充第四列

Using pandas or numpy in Python fill a fourth column based on values in other three columns

假设我有一个数据集,三个变量 A、B 和 C 的 df。我想计算基于所有 A、B 和 C 的值的变量 D。D 变量只接受来自变量的输入C 但考虑到 A 中给定值级别的 B 中的值序列。

A   B   C   D
1   10  10  390
1   11  7   383
1   12  5   378
1   13  12  366
1   14  16  350
2   50  22  378
2   51  4   374
2   52  9   365
2   53  27  338
2   54  36  302
3   100 81  319
3   101 54  265
3   102 2   263
3   103 11  252
3   104 15  237

变量D各行值的估计公式如下:

D1 = 400-C2
D2 = 400-C3-C2
D3 = 400-C4-C3-C2
D4 = 400-C5-C4-C3-C2
D5 = 400-C6-C5-C4-C3-C2
D6 = 400-C7
D7 = 400-C8-C7
D8 = 400-C9-C8-C7
D9 = 400-C10-C9-C8-C7
D10 = 400-C11-C10-C9-C8-C7
D11 = 400-C12
D12 = 400-C13-C12
D13 = 400-C14-C13-C12
D14 = 400-C15-C14-C13-C12
D15 = 400-C16-C15-C14-C13-C12

使用 cumsum 进行累加和,然后从 400 中减去结果序列。

>>> df['D'] = 400 - df.groupby('A')['C'].cumsum() 

    A    B   C    D
0   1   10  10  390
1   1   11   7  383
2   1   12   5  378
3   1   13  12  366
4   1   14  16  350
5   2   50  22  378
6   2   51   4  374
7   2   52   9  365
8   2   53  27  338
9   2   54  36  302
10  3  100  81  319
11  3  101  54  265
12  3  102   2  263
13  3  103  11  252
14  3  104  15  237