当条件不满足时重置 pandas cumsum [重复]

2023-12-03

我经历了不同的 stackoverflow 问题并最终发布它,因为我无法解决我面临的问题之一。我有一个如下所示的数据框

A        B          C
group1   group1_c   12
group1   group1_c   12
group1   group1_c   12
group1   group1_c   1
group1   group1_c   12
group1   group1_c   12

我必须将两行匹配在一起,每当值匹配时,我就会对其进行求和。去做这个,

df['cumul'] = df['C'].eq(df.groupby(['A','B'])['C'].shift(1).ffill()).groupby([df['A'],df['B']).cumsum()

一旦我这样做了,

A        B          C    Cumul
group1   group1_c   12   0
group1   group1_c   12   1
group1   group1_c   12   2
group1   group1_c   1    2
group1   group1_c   12   3 
group1   group1_c   12   3

而如果不满足条件我想重置。预期的解决方案

A        B          C    Cumul
group1   group1_c   12   0
group1   group1_c   12   1
group1   group1_c   12   2
group1   group1_c   1    0
group1   group1_c   12   0 
group1   group1_c   12   1

请指教 谢谢


如果需要对每个连续值进行计数C色谱柱使用Series.ne with Series.shift和累计总和,最后使用计数器GroupBy.cumcount:

df['cumul'] = df.groupby(df['C'].ne(df['C'].shift()).cumsum()).cumcount()

print (df)
        A         B   C  cumul
0  group1  group1_c  12      0
1  group1  group1_c  12      1
2  group1  group1_c  12      2
3  group1  group1_c   1      0
4  group1  group1_c  12      0
5  group1  group1_c  12      1

如果需要每A, Bgroups 还添加两个组:

print (df)
        A         B   C
0  group1  group1_c  12
1  group1  group2_c  12 <-changed groups
2  group1  group2_c  12 <-changed groups
3  group1  group1_c   1
4  group1  group1_c  12
5  group1  group1_c  12

s = df['C'].ne(df['C'].shift()).cumsum()
df['cumul'] = df.groupby([df['A'],df['B'], s]).cumcount()

df['cumul1'] = df.groupby(df['C'].ne(df['C'].shift()).cumsum()).cumcount()
print (df)
        A         B   C  cumul  cumul1
0  group1  group1_c  12      0       0
1  group1  group2_c  12      0       1
2  group1  group2_c  12      1       2
3  group1  group1_c   1      0       0
4  group1  group1_c  12      0       0
5  group1  group1_c  12      1       1

替代解决方案:

s = df[['A','B','C']].ne(df[['A','B','C']].shift()).any(axis=1).cumsum()
df['cumul'] = df.groupby(s).cumcount()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当条件不满足时重置 pandas cumsum [重复] 的相关文章

随机推荐

  • 在html表中动态显示哈希数组?

    我有一个名为 products 的数据库 其中有一个使用 hstore 的字段 称为data 目前 在我的 index html haml 中 我只是循环浏览产品并显示它们data作为哈希 products each do product
  • 使用 openpyxl 可以实现更精确的图像放置吗? (像素坐标而不是单元坐标?)

    我正在尝试复制和自动化工作中常用的实践 我正在尝试在 openpyxl 的单元格中放置多个图像和文本 但是我只能将图像锚定到单元格的左上角 并且还没有找到比这更准确定位的方法 所以它们最终会与彼此和文本重叠 from openpyxl im
  • Xamarin Forms:在 IOS 中的 UI 中,相机图片向左旋转

    从 IOS 相机拍摄的照片在 UI 中显示时左旋转 我已经遇到过此类问题并通过此解决了thread 但在这种情况下 我只保存image path列出 相机代码 public async void OpenMyCamera try List
  • 最后一个孩子不工作 css/html

    我试图有一排四个 div frontpage width 240px margin bottom 20px margin right 50px float left webkit box sizing border box moz box
  • 用于绘制图形和滚动的面板

    我希望能够使用Panel或类似的方法将图形绘制到 Winform 上 如果图形变得大于控件 我似乎看不到任何有关添加滚动条的信息 是否可以用a来做到这一点Panel或者是否有类似的控件允许它 将 AutoScroll 属性设置为 true
  • 读入文件中以特定字符开头的每一行

    我正在尝试读取以 X 开头的文件中的每一行 我不想读取 X 本身 而只是读取接下来的行的其余部分 with open hnr1 abc r as file f file read id for line in f if line start
  • 在 Google 日历中添加和保存活动的链接

    我正在尝试创建一个在我的 Google 日历中添加活动的链接 继较早的条目之后 添加到 Google 日历的链接 我已经能够做到这一点 但它会将我带到一个页面 我必须按 保存 按钮才能结束该过程 是否可以添加参数来添加事件而无需按 保存 按
  • 如何使用VBA中的循环函数填充多个文本框

    我用 VBA 制作了一个带有许多文本框的用户界面 我读了一张 Excel 工作表 并将该工作表的所有值放入用户界面的所有文本框中 因此用户可以修改这些值 然后将其保存在 Excel 工作表中 因为我们不能像数组一样命名文本框 textBox
  • IE7下有两个同名的cookie怎么办?

    一些背景 除了 PHPSESSID 之外 CakePHP 还写入它自己的会话 ID cookie 这用于验证请求 然后 SWFupload 发送一个文件和该令牌进行身份验证 并被选为新的用户代理 因此在 cakephp 中 您必须禁用 ch
  • 具有命名空间解组功能的 JAXB(使用 REST 服务中的 Jersey)

    我正在尝试从 Convio 的公共 api 解组一个简单的 xml 文档 我没有收到以下代码的任何编译器错误 但它也不会产生结果 这些值为空 如果我从 xml 文档中删除架构和命名空间项 并从 POJO 中删除命名空间属性 那么它将运行得很
  • plot_surface : 获取写在右下角的 x,y,z 值

    我是 matplotlib 的新用户 使用 matplotlib 和plot surface 绘制曲面 3D 时 会出现一个带有图形的窗口 在该窗口中 右下角有鼠标实际位置的坐标 是否可以访问这些值 我在互联网上搜索过 但提出的解决方案很少
  • 新版本的c++

    C 是否会推出新版本 何时推出 C C 0X 的创建者常见问题解答 http www2 research att com bs C 0xFAQ html 问题 C 0x什么时候成为正式标准 但 C 0X 确实在某种程度上存在于各种编译器中
  • 如何在Three20的AppDelegate中添加全局右栏按钮(UINavigationController)

    我想在全局 AppDelegate 中添加一个全局右栏按钮 这样我的所有视图控制器都会自动具有此按钮 我在AppDelegate中添加了 navigator window rootViewController navigationContr
  • 将具有重复字符的字符串拆分为列表

    我对正则表达式没有太多经验 但我已经阅读了很多相关内容 假设有一个字符串s 111234 我想要一个列表 其中字符串分为L 111 2 3 4 我的方法是让一组检查它是否是数字 然后检查该组是否重复 像这样的东西 L re findall
  • JS:获取contentEditable div中所有选定节点的数组

    你好 我使用 contentEditable 已经有一段时间了 我想我已经很好地处理它了 我回避的一件事是如何获取对部分或完全在用户选择范围内的所有节点的引用数组 有人有主意吗 可以从以下几点开始
  • 导航到不同的 html 页面时,jQuery Mobile 页面事件不会触发

    我正在尝试使用导航到不同的 html 页面 mobile changePage PlayGame html transition slideup true true PlayGame html 正在转换为 但是 以下内容均未触发 docum
  • 我们如何在单个 JSF 页面中使用多个 标记或 标记?

    我的问题是 我在一个 JSF 页面中有 2 个表单 每个表单都有其
  • 如何使用 UIGestureRecognizer 检测圆周运动

    我希望能够检测到某人的手指在屏幕上画圆周运动 就像他们在画 O 一样 这可以通过 UIGestureRecognizer 实现吗 我认为这个问题的答案取决于您对圆周运动的定义以及您打算如何使用它 例如 您想知道用户手指沿着圆移动了多少度 或
  • 根据变量值生成数据总和

    我有类似这样的数据 Hosp Score Var1 Var2 Var3 1 0 5 3 0 1 1 10 8 1 1 2 11 8 2 1 3 5 3 2 2 0 6 4 0 2 2 10 6 1 2 3 10 7 2 3 1 4 3 2
  • 当条件不满足时重置 pandas cumsum [重复]

    这个问题在这里已经有答案了 我经历了不同的 stackoverflow 问题并最终发布它 因为我无法解决我面临的问题之一 我有一个如下所示的数据框 A B C group1 group1 c 12 group1 group1 c 12 gr