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

Pandas中如何按组内首个Note重命名Code分组?

解决Pandas按组替换分组列为组内首次出现值的问题

嘿,这个需求其实很容易实现,用Pandas的分组功能就能搞定!我给你两种方法,都能达到你想要的效果,咱们一步步来:

先准备示例数据

首先咱们先把你给出的示例转换成Pandas DataFrame,方便后续演示:

import pandas as pd

# 你的输入数据
data = {
    'CODE': ['A', 'B', 'A', 'B', 'C'],
    'NOTE': ['Banana', 'Cola', 'Apple', 'Fanta', 'Toy']
}
df = pd.DataFrame(data)

此时的输入DataFrame是:

CODENOTE
0ABanana
1BCola
2AApple
3BFanta
4CToy

方法一:用分组映射字典替换

这种方法先构建一个“分组键(CODE)→组内首个NOTE”的映射字典,再用这个字典替换原CODE列:

# 第一步:获取每个CODE对应的首个NOTE,转成字典
code_first_note_map = df.groupby('CODE')['NOTE'].first().to_dict()
# 第二步:用字典替换原CODE列
df['CODE'] = df['CODE'].map(code_first_note_map)

方法二:用transform直接广播组内首个值(更简洁)

Pandas的transform方法可以将分组计算的结果广播到组内的每一行,一步到位:

df['CODE'] = df.groupby('CODE')['NOTE'].transform('first')

最终结果

两种方法执行后,你都会得到想要的输出:

CODENOTE
0BananaBanana
1ColaCola
2BananaApple
3ColaFanta
4ToyToy

简单解释下原理:groupby('CODE')['NOTE'].first()会提取每个CODE分组里第一次出现的NOTE值,不管是转成字典映射还是用transform广播,最终都是把原CODE列的每个值替换成对应分组的首个NOTE。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:09:44