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

Pandas如何处理部分重复行:保留行并替换为分组最值

如何在Pandas中按分组替换列值同时保留所有行?

当然有合适的方法!你需要的是groupby结合transform函数,这正是用来处理这种「保留所有行同时按分组替换列值」场景的利器。

步骤详解

首先先重现你的初始DataFrame:

import pandas as pd

df = pd.DataFrame({
    'a': ['a','b','b','c'],
    'b': [1,2,3,4],
    'c': [2,3,4,1],
    'd': [1.1,1.2,1.3,1.4]
})

核心处理代码如下,直接修改原DataFrame的对应列:

# 按列'a'分组,将列'b'替换为分组最小值
df['b'] = df.groupby('a')['b'].transform('min')
# 按列'a'分组,将列'c'替换为分组最大值
df['c'] = df.groupby('a')['c'].transform('max')

执行后得到的结果完全符合你的需求:

a  b  c    d
0  a  1  2  1.1
1  b  2  4  1.2
2  b  2  4  1.3
3  c  4  1  1.4

为什么drop_duplicates和duplicated不适用?

你尝试的这两个函数都是用来识别或移除重复行的,而你的需求是保留所有行,仅修改指定列的值为分组的聚合结果,所以它们无法覆盖你的场景。

补充:不修改原DataFrame的写法

如果想保留原始数据,可以用assign链式操作生成新的DataFrame:

processed_df = df.assign(
    b=df.groupby('a')['b'].transform('min'),
    c=df.groupby('a')['c'].transform('max')
)

transform函数的核心优势是:对每个分组执行聚合操作后,会将结果广播回原DataFrame的每一行,完美匹配「保留行数+替换分组聚合值」的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 16:37:27