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

Pandas如何根据分组条件修改列值并生成新列

pandas分组新增列实现方案

你可以通过groupby结合transform方法完成需求,两种常用实现方式如下:

代码实现

import pandas as pd

# 原始数据
d = {'id': [1, 1, 2, 2, 3], 'value': [0, 1, 0, 0, 1]}
df = pd.DataFrame(data=d)

# 方法1:使用内置max聚合(性能更高,适合大数据量场景)
# 同一分组内value最大值为1则说明存在1,否则最大值为0,完全匹配需求
df['newvalue'] = df.groupby('id')['value'].transform('max')

# 方法2:使用自定义lambda+any判断(可读性更强)
# 直接对应“分组内存在任意1就返回1”的规则
# df['newvalue'] = df.groupby('id')['value'].transform(lambda x: 1 if x.any() else 0)

print(df)

运行后输出结果和你期望的完全一致:

id  value  newvalue
0   1      0         1
1   1      1         1
2   2      0         0
3   2      0         0
4   3      1         1

说明

  • transform方法会将分组聚合后的结果广播到分组内的所有行,刚好匹配你需要同组所有行取值一致的要求
  • 优先推荐方法1,pandas内置聚合函数的执行效率远高于自定义lambda函数,数据量越大优势越明显

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:54:03