使用来自另一列的信息创建一列

时间:2019-09-05 04:54:52

标签: python pandas

这可能是一个幼稚的问题,但是我无法合理地把握这个问题。我有一个看起来像一样的数据集-

       Date_1  Count  Value
0   18/8/2018    220     10
1   24/8/2018    231     14
2   29/8/2018    272      9
3   20/7/2018     83      5
4   13/7/2018     53      5
5   24/7/2018    120     10
6   17/8/2018    196      1
7   26/7/2018    118      1
8   22/8/2018    236     11
9   19/7/2018     74      4
10  26/7/2018    118     12
11  10/8/2018    168     16
12  29/8/2018    272      2
13   5/7/2018     18    148
14  24/8/2018    231     11
15   3/8/2018    154     13
16  20/8/2018    245      1
17  31/8/2018    320      6
18  26/8/2018    287      8
19  10/7/2018     39     24
20   2/8/2018    143     12
21   2/8/2018    143     12

这只是我的csv的一小段。日期对应于特定日期,计数对应于重复该日期的次数,而值是每个日期的信息。我想创建一个具有特殊逻辑的新列Value_2:

在特定日期将为3500-值。例如

对于日期2/8/2018,您可以在示例中看到2个日期,输出应为-

Date_1           Count    Value     Value_2
2/8/2018         143      12     3488(3500-12)

2/8/2018         143      12     3476(3488-12) 

以此类推。

数据集共有20000个条目。

我可以使用python中的groupby函数来获得特定日期的总数,但不能为特定日期的实例获得总数。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用

df['Value_2'] = 3500 - df.groupby('Date_1').Value.cumsum()

#        Date_1  Count  Value  Value_2
# 0   18/8/2018    220     10     3490
# 1   24/8/2018    231     14     3486
# 2   29/8/2018    272      9     3491
# 3   20/7/2018     83      5     3495
# 4   13/7/2018     53      5     3495
# 5   24/7/2018    120     10     3490
# 6   17/8/2018    196      1     3499
# 7   26/7/2018    118      1     3499
# 8   22/8/2018    236     11     3489
# 9   19/7/2018     74      4     3496
# 10  26/7/2018    118     12     3487
# 11  10/8/2018    168     16     3484
# 12  29/8/2018    272      2     3489
# 13   5/7/2018     18    148     3352
# 14  24/8/2018    231     11     3475
# 15   3/8/2018    154     13     3487
# 16  20/8/2018    245      1     3499
# 17  31/8/2018    320      6     3494
# 18  26/8/2018    287      8     3492
# 19  10/7/2018     39     24     3476
# 20   2/8/2018    143     12     3488
# 21   2/8/2018    143     12     3476