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

如何基于DataFrame分组的列值一致性生成新列c?

解决方案

不用for循环,用pandas的分组+transform操作就能高效实现需求,步骤如下:

1. 构造原DataFrame

先把你的数据转换成pandas DataFrame:

import pandas as pd

df = pd.DataFrame({
    'a': [1,1,1,2,3,3,4,5,5,5,6,6],
    'b': ['-', '-', 'R', '-', 'R', 'R', '-', '-', '-', '-', 'R', '-']
})

2. 生成新列c

核心代码一行搞定:

df['c'] = df.groupby('a')['b'].transform(lambda x: 1 if x.nunique() > 1 else 0)

代码解释

  • groupby('a')['b']:按列a的值分组,取出每组的b列数据
  • transform:将每组的计算结果广播到该组的每一行,保证结果和原DataFrame行数一致
  • x.nunique():统计当前分组内b的唯一值数量,若数量大于1,说明组内b值不一致,返回1;否则返回0

执行后得到的DataFrame就是你期望的结果:

a  b  c
0  1  -  1
1  1  -  1
2  1  R  1
3  2  -  0
4  3  R  0
5  3  R  0
6  4  -  0
7  5  -  0
8  5  -  0
9  5  -  0
10 6  R  1
11 6  -  1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:58:16