如何将DataFrame中含Red的Owner的所有Vehicle_Color替换为Red?
解决思路与实现代码
这需求挺常见的,我来给你捋个清晰的实现方案!核心逻辑就是先找出所有拥有至少一辆红色车辆的车主,再把这些车主名下所有车辆的颜色统一改成红色,用Pandas可以高效搞定:
分步实现思路
- 定位目标车主:先筛选出所有
Vehicle_Color为Red的记录,提取对应的Owner并去重,得到一个包含所有"有红色车辆的车主"的列表。 - 批量替换颜色:用这个车主列表匹配原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
相关产品推荐
相关产品推荐

