python-3.x - 每当另一列更改时求和
问题描述
我有一个df
VENDOR、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