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

如何将DataFrame中含Red的Owner的所有Vehicle_Color替换为Red?

解决思路与实现代码

这需求挺常见的,我来给你捋个清晰的实现方案!核心逻辑就是先找出所有拥有至少一辆红色车辆的车主,再把这些车主名下所有车辆的颜色统一改成红色,用Pandas可以高效搞定:

分步实现思路

  1. 定位目标车主:先筛选出所有Vehicle_Color为Red的记录,提取对应的Owner并去重,得到一个包含所有"有红色车辆的车主"的列表。
  2. 批量替换颜色:用这个车主列表匹配原DataFrame,把匹配到的所有行的Vehicle_Color字段替换成Red。

完整代码示例

import pandas as pd

# 构建你提供的原始DataFrame
data = {
    'Owner': ['James', 'Peter', 'James', 'Sally', 'Steven', 'James', 'James', 'Peter'],
    'Vehicle_Color': ['Red', 'Green', 'Blue', 'Blue', 'Red', 'Blue', 'Red', 'Blue']
}
df = pd.DataFrame(data)

# 步骤1:获取所有拥有红色车辆的车主
red_owners = df[df['Vehicle_Color'] == 'Red']['Owner'].unique()

# 步骤2:替换这些车主的所有车辆颜色为Red
df.loc[df['Owner'].isin(red_owners), 'Vehicle_Color'] = 'Red'

print(df)

运行结果

执行后你会得到如下处理后的DataFrame:

Owner Vehicle_Color
0   James            Red
1   Peter          Green
2   James            Red
3   Sally           Blue
4  Steven            Red
5   James            Red
6   James            Red
7   Peter          Green

简单解释下:James和Steven都有红色车辆,所以他们名下所有车辆的颜色都被统一改成了Red;Peter和Sally没有红色车辆,所以他们的车辆颜色保持原样。

如果追求代码简洁,也可以把两步合并成一行(可读性会稍弱一点):

df.loc[df['Owner'].isin(df[df['Vehicle_Color'] == 'Red']['Owner'].unique()), 'Vehicle_Color'] = 'Red'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:01:21