微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何为数据框中的列应用多个条件?

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

项目 col1
1
1
1
1
1
2
2
2
2

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

项目 col1 结果
1 1
1 1
1 2
1 3
1 3
2 1
2 2
2 2
2 2

我可以用下面的代码计算累计总和,

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

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

解决方法

检查groupby内的factorizetransform

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。