如何对数据框中的列应用多个条件?

How to apply multiple conditions for columns in a dataframe?

我有一个如下所示的数据框,两列之间没有关系

item col1
cat 1
cat 1
dog 1
fish 1
fish 1
fish 2
snake 2
snake 2
snake 2

我想使用这两个生成一个新列。结果列应该对 items 列进行累加和(仅当项目更改时才增加数字)并且如果 col1 中的系列发生更改,数字必须再次从 1 开始。

item col1 result
cat 1 1
cat 1 1
dog 1 2
fish 1 3
fish 1 3
fish 2 1
snake 2 2
snake 2 2
snake 2 2

我可以用下面的代码进行累加,

df["result"] = (df["item"] != df["item"].shift(1)).cumsum()

但是当 col1 发生变化时将计数器重置为 1 的条件是我需要的。

transform

中检查 groupbyfactorize
df['new'] = df.groupby('col1').item.transform(lambda x : x.factorize()[0]+1)
df
    item  col1  new
0    cat     1    1
1    cat     1    1
2    dog     1    2
3   fish     1    3
4   fish     1    3
5   fish     2    1
6  snake     2    2
7  snake     2    2
8  snake     2    2