如何在pandas中按name列重复值将age列替换为对应分组最小值
实现代码
首先导入pandas并构造示例数据:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'name': ['ram', 'syam', 'jodu', 'ram', 'jodu', 'shyam'], 'age': [25, 12, 15, 23, 20, 18], 'year': [97, 95, 96, 98, 99, 10] })
核心逻辑使用groupby + transform实现,一行代码即可完成需求:
# 按name分组,将age替换为对应分组的最小值 df['age'] = df.groupby('name')['age'].transform('min')
逻辑说明
transform方法会将分组后的聚合结果(这里是min求最小值)广播回原数据对应的每一行,不会改变原DataFrame的行数,完美匹配保留所有原始行、仅替换age列值的需求。
注意事项
示例结果中shyam的age被替换为12,属于原始数据里syam和shyam拼写不一致导致的分组差异,如果实际业务场景中存在同名不同拼写的情况,需要先对name列做标准化处理(比如统一拼写格式、去除多余空格/特殊字符等)后再执行分组操作。
内容的提问来源于stack exchange,提问作者Somu Nath
相关产品推荐
相关产品推荐

