计算派生列

2024-03-29 09:57:41 发布

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

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

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\u a,对于date\u 1,它将是17500-C\u 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
.

有谁能说出一种方法来达到同样的效果呢。你知道吗

谢谢


Tags: 数据方法编辑date效果
2条回答

我不明白你为什么说这是错的,这一行产生了你想要的:

df['t_A'] = 17500-df.groupby('Date_1')["C_B"].cumsum()

结果如下:

Date_1  Date_2  C_B t_A
0   01/09/2019  02/08/2019  7   17493
1   01/09/2019  03/08/2019  1189 16304
2   01/09/2019  04/08/2019  8    16296
3   01/09/2019  04/08/2019  1650 14646
4   01/09/2019  05/08/2019  9    14637
5   01/09/2019  05/08/2019  1805 12832
6   01/09/2019  06/08/2019  63   12769
7   01/09/2019  06/08/2019  2    12767
8   01/09/2019  07/08/2019  1985 10782
9   02/09/2019  01/09/2019  886 16614
10  02/09/2019  01/09/2019  1980 14634
11  02/09/2019  03/08/2019  3   14631
12  02/09/2019  03/08/2019  4   14627
13  02/09/2019  04/08/2019  138 14489
14  02/09/2019  04/08/2019  8   14481
15  02/09/2019  05/08/2019  259 14222
16  03/09/2019  01/09/2019  829 16671
17  03/09/2019  01/09/2019  509 16162
18  03/09/2019  02/09/2019  1884 14278
19  03/09/2019  04/08/2019  6   14272
20  03/09/2019  04/08/2019  2   14270
21  03/09/2019  05/08/2019  4   14266
22  03/09/2019  05/08/2019  161 14105

使用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

相关问题 更多 >