You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas groupby为分组新增X、Y独立计数的序列列

实现方案

你可以通过pandas的分组累计求和功能直接生成目标列,示例代码如下:

import pandas as pd

# 假设df为你的原始数据集,已包含c1、c2两列
# 按c1分组,累计统计每个分组内X出现的次数生成Ct_X
df['Ct_X'] = df.groupby('c1')['c2'].transform(lambda x: (x == 'X').cumsum())
# 按c1分组,累计统计每个分组内Y出现的次数生成Ct_Y
df['Ct_Y'] = df.groupby('c1')['c2'].transform(lambda x: (x == 'Y').cumsum())

如果处理的数据量较大,也可以用下面的写法,避免lambda带来的性能损耗:

import pandas as pd

df['is_X'] = (df['c2'] == 'X').astype(int)
df['Ct_X'] = df.groupby('c1')['is_X'].cumsum()
df['is_Y'] = (df['c2'] == 'Y').astype(int)
df['Ct_Y'] = df.groupby('c1')['is_Y'].cumsum()
# 删除临时生成的辅助列
df = df.drop(columns=['is_X', 'is_Y'])

逻辑说明

  • 对c1列分组保证每个分组的计数独立,切换c1取值时计数自动重置
  • 用(x == 'X')生成布尔序列,对应位置为X时值为True(等价于数值1),否则为False(等价于数值0)
  • 调用cumsum()做累计求和,刚好符合遇到对应类别计数+1、其他情况计数不变的需求,和你给出的预期结果完全匹配。

内容的提问来源于stack exchange,提问作者Terry Bogard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:54:02