根据其他列值生成一列

vp7

我有一个数据框:

Date_1      Date_2     is_B weight_1
01/09/2019  02/08/2019  1   254
01/09/2019  02/08/2019  1   320
01/09/2019  04/08/2019  1   244
01/09/2019  04/08/2019  1   247
01/09/2019  14/08/2019  0   343
01/09/2019  14/08/2019  1   161
01/09/2019  14/08/2019  1   386
01/09/2019  15/08/2019  1   465
01/09/2019  15/08/2019  1   133
01/09/2019  15/08/2019  1   310
01/09/2019  15/08/2019  1   155

我想生成一列new_weight,以便对于每个date_1,new_weight的值为5000-weight_1,其中is_B值为1。如果is_B = 0,则将较旧的new_weight值复制到new_weight中。

我知道要计算new_weight,我们可以做到:

df = 5000 - df.groupby('date_1')['weight_1'].cumsum()

但是我不确定如何在代码中为is_b应用条件。

有人可以建议用熊猫或麻木的方式做同样的事情吗?

编辑

预期产量

Date_1      Date_2     is_B weight_1  new_weight
01/09/2019  02/08/2019  1   254       5000-254
01/09/2019  02/08/2019  1   320       5000-254-320 
01/09/2019  04/08/2019  1   244       5000-254-320-244
01/09/2019  04/08/2019  1   247       5000-254-320-244-247
01/09/2019  14/08/2019  0   343       5000-254-320-244-247(we won't subtract 343 as isBooked = 0)
01/09/2019  14/08/2019  1   161       .
01/09/2019  14/08/2019  1   386       . 
01/09/2019  15/08/2019  1   465       . 
01/09/2019  15/08/2019  1   133       .
01/09/2019  15/08/2019  1   310       .
01/09/2019  15/08/2019  1   155       .

谢谢

安塞夫

您可以使用DataFrame.mask+ Series.cumsum

df['new_weight']=5000-(df.mask(df['is_B'].eq(0)).groupby('Date_1')['weight_1'].cumsum()).ffill()
print(df)

        Date_1      Date_2  is_B  weight_1  new_weight
0   01/09/2019  02/08/2019     1       254      4746.0
1   01/09/2019  02/08/2019     1       320      4426.0
2   01/09/2019  04/08/2019     1       244      4182.0
3   01/09/2019  04/08/2019     1       247      3935.0
4   01/09/2019  14/08/2019     0       343      3935.0
5   01/09/2019  14/08/2019     1       161      3774.0
6   01/09/2019  14/08/2019     1       386      3388.0
7   01/09/2019  15/08/2019     1       465      2923.0
8   01/09/2019  15/08/2019     1       133      2790.0
9   01/09/2019  15/08/2019     1       310      2480.0
10  01/09/2019  15/08/2019     1       155      2325.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据其他数据框值创建一列

来自分类Dev

根据其他分类值添加一列因子

来自分类Dev

如何根据多列其他列中的值减去一列中的值?

来自分类Dev

如何根据一列的唯一值将其他列的行转换为列?

来自分类Dev

如何根据其他列的匹配值将值从一列移动到另一列

来自分类Dev

PySpark Dataframe根据其他列中的重复值识别一列中的不同值

来自分类Dev

如何根据R中其他列的值过滤一列中的值?

来自分类Dev

如何根据其他列值对一列中的值进行排序?

来自分类Dev

根据其他列中的条件对一列中的值求和,并更改值

来自分类Dev

如何根据其他 4 列的值对一列中的值求和?

来自分类Dev

根据 SQL Server 中的其他列值推断一列的值

来自分类Dev

SQL:我需要一列根据其他列的值自动更新其值

来自分类Dev

在每种情况下根据其他列生成一列

来自分类Dev

根据其他数据类型的另一列设置列的默认值

来自分类Dev

根据其他列中的某些值创建另一列

来自分类Dev

Oracle SQL根据其他列值将一列分组

来自分类Dev

根据Pandas数据框中的其他三列更改一列的值

来自分类Dev

根据PHP第一列的值检测其他列的更改

来自分类Dev

如何根据另一列中的间隔填充熊猫中其他列的缺失值?

来自分类Dev

根据pyspark数据框中的其他列的值聚合一列

来自分类Dev

根据Pandas数据框中的其他三列更改一列的值

来自分类Dev

R编码如何添加一列并根据其他两列中的值填充它

来自分类Dev

Pandas - 根据其他 2 列的值创建一列

来自分类Dev

根据第一列过滤其他列

来自分类Dev

如何根据其他列查找一列的区别

来自分类Dev

根据其他两列选择最多一列

来自分类Dev

R:根据另一列的值将其他行的值附加到当前行

来自分类Dev

创建条件以从其他两列生成一列

来自分类Dev

R-根据其他表中的条件更新一列中的值

Related 相关文章

  1. 1

    根据其他数据框值创建一列

  2. 2

    根据其他分类值添加一列因子

  3. 3

    如何根据多列其他列中的值减去一列中的值?

  4. 4

    如何根据一列的唯一值将其他列的行转换为列?

  5. 5

    如何根据其他列的匹配值将值从一列移动到另一列

  6. 6

    PySpark Dataframe根据其他列中的重复值识别一列中的不同值

  7. 7

    如何根据R中其他列的值过滤一列中的值?

  8. 8

    如何根据其他列值对一列中的值进行排序?

  9. 9

    根据其他列中的条件对一列中的值求和,并更改值

  10. 10

    如何根据其他 4 列的值对一列中的值求和?

  11. 11

    根据 SQL Server 中的其他列值推断一列的值

  12. 12

    SQL:我需要一列根据其他列的值自动更新其值

  13. 13

    在每种情况下根据其他列生成一列

  14. 14

    根据其他数据类型的另一列设置列的默认值

  15. 15

    根据其他列中的某些值创建另一列

  16. 16

    Oracle SQL根据其他列值将一列分组

  17. 17

    根据Pandas数据框中的其他三列更改一列的值

  18. 18

    根据PHP第一列的值检测其他列的更改

  19. 19

    如何根据另一列中的间隔填充熊猫中其他列的缺失值?

  20. 20

    根据pyspark数据框中的其他列的值聚合一列

  21. 21

    根据Pandas数据框中的其他三列更改一列的值

  22. 22

    R编码如何添加一列并根据其他两列中的值填充它

  23. 23

    Pandas - 根据其他 2 列的值创建一列

  24. 24

    根据第一列过滤其他列

  25. 25

    如何根据其他列查找一列的区别

  26. 26

    根据其他两列选择最多一列

  27. 27

    R:根据另一列的值将其他行的值附加到当前行

  28. 28

    创建条件以从其他两列生成一列

  29. 29

    R-根据其他表中的条件更新一列中的值

热门标签

归档