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

如何按姓名分组将DataFrame中CA行的Value替换为GCA对应值

分组替换DataFrame指定行的Value值

给定如下数据,需要按First Name和Last Name分组,将每组内Type为CA的行的Value替换为同组中Type为GCA的行的Value(若组内无GCA行则保留原Value):

import pandas as pd

data = {
    'First Name': ['Alice', 'Alice', 'Alice', 'Alice', 'Bob'],
    'Last Name': ['Johnson', 'Johnson', 'Johnson', 'Johnson', 'Jack'],
    'Type': ['CA', 'DA', 'FA', 'GCA', 'CA'],
    'Value': [25, 30, 35, 40, 50]
}
df = pd.DataFrame(data)

解决方案

使用groupby结合transform实现分组内的取值与替换:

# 分组获取每组GCA对应的Value值,无GCA则保留原数据
gca_values = df.groupby(['First Name', 'Last Name'])['Value'].transform(
    lambda x: x[df.loc[x.index, 'Type'] == 'GCA'].iloc[0] if (df.loc[x.index, 'Type'] == 'GCA').any() else x
)

# 替换Type为CA的行的Value
df.loc[df['Type'] == 'CA', 'Value'] = gca_values[df['Type'] == 'CA']

结果验证

执行后输出DataFrame:

First Name Last Name Type  Value
0      Alice   Johnson   CA     40
1      Alice   Johnson   DA     30
2      Alice   Johnson   FA     35
3      Alice   Johnson  GCA     40
4        Bob      Jack   CA     50

可以看到Alice Johnson组的CA行Value已从25替换为同组GCA行的40,而Bob Jack组因无GCA行,CA行Value保持50不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 20:06:05