基于布尔值的累积和
我有一个如下所示的数据框:
Finalcheck |
---|
False |
True |
True |
True True |
False |
True |
我想在此数据框中创建另一列,它根据 Finalcheck 变量给出累积总和,如下所示:
Finalcheck | Position |
---|---|
False | 1 |
True | 2 |
True | 3 |
True | 4 |
False | 1 |
True | 2 |
我已经尝试了多种方法来实现这一目标,但我能得到的最接近的方法是使用带有 pandas 中的 cumsum 函数的 groupby:
df['position'] = df.groupby((df.finalcheck).cumsum())
这没有给我想要的输出。你能帮我找出我哪里出了问题吗?
I have a dataframe that looks like this:
finalcheck |
---|
False |
True |
True |
True |
False |
True |
I want to create another column in this dataframe which gives me a cumulative sum based on finalcheck variable like so:
finalcheck | position |
---|---|
False | 1 |
True | 2 |
True | 3 |
True | 4 |
False | 1 |
True | 2 |
I have tried multiple ways of achieving this but the closest I could get was by using a groupby with the cumsum function in pandas:
df['position'] = df.groupby((df.finalcheck).cumsum())
This did not give me the desired output. Could you help me identify where I am going wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一个缺口和岛屿问题。每次你遇到一个错误,你就会开始一个新的岛屿。然后在每个岛内,您只需按顺序对行进行编号即可:
It's a gap-and-island problem. Every time you encounter a False, you start a new island. Then within each island, you just number the row sequentially:
如果你在 groupby 之外思考,你可以尝试这个
If you're thinking outside of groupby, you can try this