首页 > 解决方案 > 每当另一列更改时求和

问题描述

我有一个dfVENDOR、INVOICE 和 AMOUNT。我想创建一个名为 ITEM 的列,它从 1 开始,当发票编号更改时,它将更改为 2,依此类推。

我尝试使用cumsum,但它实际上并没有工作 - 不工作是有意义的。我编写代码的方式将为同一张发票求和 1,并在发票更改时重新开始。

data = pd.read_csv('data.csv')

data['ITEM_drop'] = 1
s = data['INVOICE'].ne(data['INVOICE'].shift()).cumsum()
data['ITEM'] = data.groupby(s)['ITEM_drop'].cumsum()

输出:

VENDOR   INVOICE   AMOUNT   ITEM_drop   ITEM
  A        123       10       1           1
  A        123       12       1           2
  A        456       44       1           1
  A        456       5        1           2
  A        456       10       1           3
  B        999       7        1           1 
  B        999       1        1           2

我想要的是:

VENDOR   INVOICE   AMOUNT   ITEM_drop   ITEM
  A        123       10       1           1
  A        123       12       1           1
  A        456       44       1           2
  A        456       5        1           2
  A        456       10       1           2
  B        999       7        1           3 
  B        999       1        1           3

标签: python-3.xpandas

解决方案


推荐阅读