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

如何用Pandas筛选每个id对应最新分组的所有行

解决方案:按ID筛选最新日期对应分组的所有行

原始数据

首先构造示例DataFrame:

import pandas as pd

data = {
    'id': [1,1,1,1,2,2,2,2,3,3],
    'date': ['1.1','2.1','3.1','4.1','5.2','6.2','9.2','12.2','15.3','20.3'],
    'group': [3,3,5,5,2,1,1,1,15,20]
}
df = pd.DataFrame(data)

实现步骤

  1. 转换日期格式:将date列转为可比较的datetime类型,确保日期排序准确
df['date'] = pd.to_datetime(df['date'], format='%m.%d')
  1. 获取每个ID的最新分组:按ID分组后,取每个组内日期最大的行对应的group值
# 先按ID和日期排序,取每个ID的最后一行得到最新分组
latest_group = df.sort_values(['id', 'date']) \
                 .groupby('id') \
                 .last()[['group']] \
                 .reset_index() \
                 .rename(columns={'group': 'latest_group'})
  1. 合并并筛选数据:将原始数据与最新分组信息合并,筛选出每个ID下属于最新分组的所有行
# 合并数据
merged_df = df.merge(latest_group, on='id')
# 筛选符合条件的行并移除辅助列
result = merged_df[merged_df['group'] == merged_df['latest_group']].drop(columns='latest_group')

最终结果

执行上述代码后,result的输出如下:

id       date  group
2   1 2023-03-01      5
3   1 2023-04-01      5
5   2 2023-06-02      1
6   2 2023-09-02      1
7   2 2023-12-02      1
9   3 2023-03-20     20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:24:32