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

Pandas如何按多列分组删除组内ValIssueDate更大的冗余行

解决方案

你可以通过两种常用的pandas方法实现需求,核心逻辑为:按RateCompany、gs、RB三列分组后,保留每组中ValIssueDate取值最小的行。

方法1:groupby + idxmin (更高效直接)

import pandas as pd
from io import StringIO

# 构造示例DataFrame
df_str = """
      RateCompany   gs  RB  ValIssueDate
 115    T           G   54  19580101
 116    T           G   54  19870101
 336    T           S   54  19580101
 337    T           S   54  19870101
 338    T           j   53  19970101
"""
df = pd.read_csv(StringIO(df_str.strip()), sep='\s+')

# 核心处理代码
result = df.loc[df.groupby(['RateCompany', 'gs', 'RB'])['ValIssueDate'].idxmin()]

# 若需要重置索引可以加上下面这行
# result = result.reset_index(drop=True)

print(result)

方法2:排序 + 去重(灵活适配更复杂的筛选规则)

# 先按分组列和ValIssueDate升序排序,再按分组列去重保留第一条
result = df.sort_values(by=['RateCompany', 'gs', 'RB', 'ValIssueDate'])\
           .drop_duplicates(subset=['RateCompany', 'gs', 'RB'], keep='first')

两种方法运行后均可得到你期望的输出结果:

RateCompany gs  RB  ValIssueDate
115           T  G  54      19580101
336           T  S  54      19580101
338           T  j  53      19970101

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:06:05