如何解决如何为数据框中的列应用多个条件?
项目 | 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
内的factorize
和transform
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 举报,一经查实,本站将立刻删除。