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

Pandas如何标记分组内指定列最大值对应行 新增标识列实现需求

基础需求实现(按car_brand分组标记最新行)

直接用groupby+transform组合即可一行实现需求,不需要额外取索引赋值:

import pandas as pd

# 你提供的初始化代码
data = pd.DataFrame({'car_plate':['1v','2f','3a','h0','m1'],
'car_brand':['Honda','Honda','Ford','Audi','Audi'],
'last_seen':['01/01/2020','01/02/2020','01/03/2020','01/04/2020','01/05/2020']})
data['last_seen'] = pd.to_datetime(data['last_seen'])

# 新增recent列核心代码
data['recent'] = data.groupby('car_brand')['last_seen'].transform(lambda x: x == x.max()).astype(int)

运行后输出的data就是你需要的结果,逻辑是:按car_brand分组后,判断每行的last_seen是否等于该组的最大值,布尔值转整数后自然得到1/0的标记。如果同组有多行同时命中最大时间,这些行都会被标记为1,符合常规业务逻辑。


多维度分组扩展实现

如果新增car_owner字段,需要按car_brand分组后,标记每个car_plate+car_owner组合的最新last_seen行,只需要修改groupby的分组键即可,把需要区分的维度都放到分组参数里:

# 假设你的数据已经新增了car_owner列,核心代码如下
data['recent'] = data.groupby(['car_brand', 'car_plate', 'car_owner'])['last_seen'].transform(lambda x: x == x.max()).astype(int)

这个写法会自动识别每个品牌下,相同车牌+车主组合的最大时间行,标记为1,其他为0,和基础需求的逻辑完全一致,仅调整分组维度即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:15:08