首页 > 解决方案 > 计算派生列

问题描述

我有一个包含以下字段的数据集

01/09/2019  02/08/2019  7
01/09/2019  03/08/2019  1189
01/09/2019  04/08/2019  8
01/09/2019  04/08/2019  1650
01/09/2019  05/08/2019  9
01/09/2019  05/08/2019  1805
01/09/2019  06/08/2019  63
01/09/2019  06/08/2019  2
01/09/2019  07/08/2019  1985
02/09/2019  01/09/2019  886
02/09/2019  01/09/2019  1980
02/09/2019  03/08/2019  3
02/09/2019  03/08/2019  4
02/09/2019  04/08/2019  138
02/09/2019  04/08/2019  8
02/09/2019  05/08/2019  259
03/09/2019  01/09/2019  829
03/09/2019  01/09/2019  509
03/09/2019  02/09/2019  1884
03/09/2019  04/08/2019  6
03/09/2019  04/08/2019  2
03/09/2019  05/08/2019  4
03/09/2019  05/08/2019  161

我想计算一个列 t_A,它是 17500 - date_1 的 C_B 等等。

编辑 例如:

   Date_1 Date_2     C_B    t_A
  01/09/2019  02/08/2019  7     (17500-7) = 17493
  01/09/2019   03/08/2019 1189  (17493-1189) = 16304
  01/09/2019  04/08/2019  8     (16304 - 8) = 16296
  .
  .
  .
  02/09/2019  01/09/2019    886  (17500 - 886) = 16614
02/09/2019  01/09/2019  1980      (16614 - 1980) = 14634
.

任何人都可以说出实现相同目标的方法。

谢谢

标签: pythonpandasnumpy

解决方案


使用pandas.Series.cumsum

df['t_A'] = 17500 - df['C_B'].cumsum()
print(df)

输出:

    I_Code      Date_1      Date_2   C_B    t_A
0        4  01/09/2019  02/08/2019     7  17493
1        4  01/09/2019  03/08/2019  1189  16304
2        1  01/09/2019  04/08/2019     8  16296
3        4  01/09/2019  04/08/2019  1650  14646
4        1  01/09/2019  05/08/2019     9  14637
5        4  01/09/2019  05/08/2019  1805  12832
6        1  01/09/2019  06/08/2019    63  12769
7        2  01/09/2019  06/08/2019     2  12767
8        4  01/09/2019  07/08/2019  1985  10782
9        1  01/09/2019  08/08/2019   869   9913
10       2  01/09/2019  08/08/2019     6   9907
11       4  01/09/2019  08/08/2019  2072   7835
12       1  01/09/2019  09/08/2019   790   7045
13       4  01/09/2019  09/08/2019  2120   4925
14       1  01/09/2019  10/08/2019  1275   3650
15       1  01/09/2019  11/08/2019  1355   2295
16       4  01/09/2019  11/08/2019  2249     46

推荐阅读