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

Pandas groupby+transform实现按ID分组取最新时间对应值更新全组

问题解决

报错原因

你代码中的['C'].max()是对Python列表对象调用max方法,自然会触发AttributeError,且你分组后仅选择了B列,也无法获取到C列的数值。

前置处理

首先需要将B列转为标准datetime类型,避免字符串按字典序比较导致时间判断错误:

import pandas as pd
# 按日期格式转换为datetime类型
df['B'] = pd.to_datetime(df['B'], format='%m/%d/%Y')

高效实现代码

以下方案时间复杂度为O(n),无额外排序操作,10万+行数据可在毫秒级完成处理:

# 生成每个A分组对应最大B值的C值映射表
latest_c_map = df.loc[df.groupby('A')['B'].idxmax()].set_index('A')['C']
# 批量替换所有行的C列值
df['C'] = df['A'].map(latest_c_map)

结果验证

代入你提供的示例数据,处理后输出的C列完全符合预期:

'a':['zx5','zx5','ab1','ab1','mn3','mn3'],
'b':['1/1/2021','1/2/2021','1/3/2021','1/4/2021','1/5/2021','1/4/2021'],
'c':['bbb','bbb','ddd','ddd','eee','eee']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 06:39:03