在 pandas 数据帧上使用 cumcount 并有条件增量

2023-12-11

考虑数据框

df = pd.DataFrame(
    [
        ['A', 1],
        ['A', 1],
        ['B', 1],
        ['B', 0],
        ['A', 0],
        ['A', 1],
        ['B', 1]
    ], columns = ['key', 'cond'])

我想找到每个的累积(运行)计数(从 1 开始)key,只有当组中的前一个值有时我们才会增加cond == 1。当附加到上面的数据框时,这将给出

df_result = pd.DataFrame(
    [
        ['A', 1, 1],
        ['A', 1, 2],
        ['B', 1, 1],
        ['B', 0, 2],
        ['A', 0, 3],
        ['A', 1, 3],
        ['B', 1, 2]
    ], columns = ['key', 'cond'])

请注意,本质上cond每个中最后一行的值key组没有影响。

只做一个简单的group and cumcount

df.groupby('key').cumcount()

当然不考虑cond前一个元素的值。我该如何考虑这一点?

EDIT

由于下面的一些解决方案不适用于某些边缘情况,我将提供更全面的数据框进行测试。

df = pd.DataFrame(
    [
        ['A', 0],
        ['A', 1],
        ['A', 1],
        ['B', 1],
        ['B', 0],
        ['A', 0],
        ['A', 1],
        ['B', 1],
        ['B', 0]
    ], columns = ['key', 'cond'])

当附加真实结果时应该给出

df_result = pd.DataFrame(
    [
        ['A', 0, 1],
        ['A', 1, 1],
        ['A', 1, 2],
        ['B', 1, 1],
        ['B', 0, 2],
        ['A', 0, 3],
        ['A', 1, 3],
        ['B', 1, 2],
        ['B', 0, 3]
    ], columns = ['key', 'cond'])

Use groupby与组合shift and cumsum.

df['new'] = df.groupby('key').cond.apply(
        lambda x: x.shift().fillna(1).cumsum()
).astype(int)
df
  key  cond  new
0   A     1    1
1   A     1    2
2   B     1    1
3   B     0    2
4   A     0    3
5   A     1    3
6   B     1    2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 pandas 数据帧上使用 cumcount 并有条件增量 的相关文章

随机推荐

  • EXC_BAD_ACCESS 与 MKPinAnnotationView

    我在 iOS 的 mapView 上显示 MKPinAnnotationView 时遇到问题 我收到此错误 但我不明白错误来自何处 EXC BAD ACCESS 我的代码看起来不错 MKAnnotationView mapView MKMa
  • 如何找到hcaptcha回调函数

    所以我需要帮助在网站上查找 hcaptcha 回调函数 网站上没有提交按钮 所以我假设他们使用 hcaptcha 回调函数 该网站是https discord com register任何帮助将不胜感激 这段代码应该可以帮助你 https
  • 如何在 WAMPServer 中从 Windows 命令行运行 PHP

    我是 php 新手 想从命令行运行 php 我已经安装了 WAMP 并将 系统变量 设置为我的 php 文件夹 即C wamp bin php php5 4 3 当我去Run gt CMD gt 类型php a然后按回车键 它说intera
  • 在 EF Core 2.0 中使用 DataTable 作为表值参数

    更新问题描述 我们有一个批量导入流程 我们正在通过该流程IEnumerable
  • 如何使用像素RGB值0到1在java中编写PNG文件?

    我正在用 java 编写光线追踪器 并试图弄清楚如何将生成的图像写入 PNG 文件 到目前为止 我找到的所有示例都演示了如何使用 BufferedImage 创建 PNG 但它们都使用 RGB 值 0 到 255 在我的代码中 我表示 0
  • 使用 libjpeg 在 C++ 中旋转 JPEG 图像

    我正在尝试根据 EXIF 元数据中存在的 方向 参数 使用 libjpeg v9 在 C 中旋转 JPEG 图像 我能够获取 方向 参数 并在此基础上 我还能够将图像旋转到另一个文件中 以便旋转后的图像对应于 方向 值 1 请参阅我从 jp
  • 将 Google 工作表数据直接导入 R [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 是否可以在没有授权密钥的情况下直接从 Google 文档将表导入到 R 中 我有一个可共享的谷歌表格 我尝试连接到闪亮的应用程序 但找不到合适的方法 随包gsheet您可以从可共
  • 使用“pys-onClick=...”从按钮单击调用 py-script 函数不起作用?

    我对 PyScript 比较陌生 希望在单击按钮时运行一个函数 但是 无论我尝试什么代码 它似乎都不起作用 该按钮是可点击的 但似乎没有执行任何操作 当我手动调用该函数 在 py script 标记内 时 它工作正常 我错过了什么吗 这是我
  • 如何在 Automapper 中注册来自不同程序集的配置文件?

    我有一个包含许多程序集的应用程序 NET Core WebAPI 包含视图模型并使用 DTO 服务 包含 DTO 并使用域实体 在 WebAPI 程序集中 我使用以下行自动注册了自动映射器配置文件 services AddAutoMappe
  • 使用 jQuery unique 过滤重复的 img src 或删除

    我尝试了此处讨论的不同解决方法 但它们都不适用于我的情况 这是我的来源 div class colourDots img src out pictures generated product 8 300 450 100 60028 bl j
  • 为什么MySQL允许按未选择的列进行分组

    我正在读一本关于 SQL 的书 Sams Teach Yourself SQL in 10 Minutes 尽管它的标题是这样 但它还是相当不错的 然而关于 group by 的章节让我感到困惑 对数据进行分组是一个简单的过程 选定的列 下
  • Google 地图:放置项目时 IE7 和 IE8 未捕获 mouseup 事件

    我不明白为什么这把小提琴不适用于 IE7 和 IE8 目标是在地图上拖动气球并捕获 mouseup 事件以检索项目已放置的坐标 如果用户没有拖动气球 该事件会在所有浏览器 包括 IE7 和 IE8 上正确触发 但是 如果用户拖动气球 IE7
  • UIActivityController 在设备和模拟器上的行为不同

    我将 ActivityViewController 添加到我的应用程序中 如下所示 传递图像 UIActivityViewController avc UIActivityViewController alloc initWithActiv
  • 编写一个 C# 程序,扫描电子商务网站并从中提取产品图片+价格+描述

    我正在开发一个电子商务搜索引擎 可以让您在很多电子商务网站中搜索产品 我该如何处理这个问题 我需要一个能够扫描网站 解析 HTML 并确定网站中的哪些图像是产品图像 哪些是产品描述 哪些是产品价格的应用程序 很高兴听到任何想法 例如 提前致
  • 使用 Azure AD Graph 客户端 API 更改用户密码的权限问题

    我正在尝试在 ASP Net MVC 中创建一个页面来重置当前用户的密码 我正在使用 Azure Active Directory 进行用户身份验证 为了访问用户的 AD 信息 我使用 C Graph API 客户端 我的代码基于以下位置的
  • 在 eclipse 中创建连接 - ClassNotFoundException: com.mysql.jdbc.Driver

    我没有在代码中执行任何操作 我只是创建了一个 Eclipse 连接 但似乎无法 ping 它 连接属性 该罐子就是我所说的位置 GLASSFISH HOME domains domain1 lib ext 但我得到 java lang Cl
  • “texlive”应该有什么权限?

    多年来我一直使用 MacTeX 它安装在 usr local texlive 并且最近开始使用 Homebrew 来管理一些包 尽管还没有 TeX 由于采用了 Homebrew 我改变了所有的所有者 usr local to Me admi
  • JSF 中有浏览按钮吗?

    我需要这个来实现我创建的基于网络的应用程序的导入功能 我需要获取用户想要导入的文本文件的路径 以便获取文本文件内的数据并将其保存在数据库中 标准 JSF 中没有这样的组件 但是 有几个组件库提供文件选择 PrimeFaces
  • 我在应用德摩根定律时遇到问题...反馈?

    每次我的作业中出现这些问题时 我都会做错 有人能帮助我理解吗 还是老师的钥匙关了 我无法知道 因为我没有得到正确的答案 它只能让我知道我的答案是错误的 Assume x 7 and y 5 应用德摩根定律 选择与以下逻辑表达式等效的逻辑表达
  • 在 pandas 数据帧上使用 cumcount 并有条件增量

    考虑数据框 df pd DataFrame A 1 A 1 B 1 B 0 A 0 A 1 B 1 columns key cond 我想找到每个的累积 运行 计数 从 1 开始 key 只有当组中的前一个值有时我们才会增加cond 1 当