如何对数据框中的列应用多个条件?
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
中检查 groupby
和 factorize
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
我有一个如下所示的数据框,两列之间没有关系
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
groupby
和 factorize
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