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

Python Pandas:基于跨行比较筛选DataFrame中多组关联行

解决方案

步骤说明

要实现需求,需分阶段筛选:先锁定每个ID的最新日期,再在该日期范围内选出成功数最高的测试,最后保留对应所有行记录。

完整代码

import pandas as pd

# 初始化输入数据
input_df = pd.DataFrame({
    'ID': ["A", 'A', 'A', 'B', 'B', 'B','C'],
    'Test': ["e2z", 'e2z', 'b6r', 'p0o', 'r5t', 'qi4','x3w'],
    'Date': ["2022", '2022', '2020', '2019', '2019', '2018', '2023'],
    'Success': ['1', '0', '1', '0', '1', '0','0'],
    'Experiment Parameters': ["awa", '02s', 'ksa', 'fkd', 'efe', 'awe','loa']
})

# 1. 转换Date和Success为数值类型,避免字符串比较误差,方便计算成功数总和
input_df['Date'] = input_df['Date'].astype(int)
input_df['Success'] = input_df['Success'].astype(int)

# 2. 按ID分组,获取每个ID的最新日期
id_max_date = input_df.groupby('ID')['Date'].max().reset_index()
id_max_date.columns = ['ID', 'Max_Date']

# 3. 筛选出每个ID中日期等于最新日期的行
filtered_by_date = input_df.merge(id_max_date, on='ID')
filtered_by_date = filtered_by_date[filtered_by_date['Date'] == filtered_by_date['Max_Date']]

# 4. 按ID和Test分组,计算每个测试的总成功数
test_success_sum = filtered_by_date.groupby(['ID', 'Test'])['Success'].sum().reset_index()
test_success_sum.columns = ['ID', 'Test', 'Total_Success']

# 5. 按ID分组,选出每个ID下总成功数最高的测试
id_best_test = test_success_sum.groupby('ID').apply(
    lambda x: x[x['Total_Success'] == x['Total_Success'].max()]
).reset_index(drop=True)

# 6. 从原表中筛选出符合条件的所有行
result = input_df.merge(id_best_test[['ID', 'Test']], on=['ID', 'Test'])

# 恢复字段为原数据的字符串格式(可选)
result['Success'] = result['Success'].astype(str)
result['Date'] = result['Date'].astype(str)

print(result)

代码解释

  • 类型转换:将Date和Success转为数值型,解决字符串比较的逻辑错误,同时保证成功数求和的准确性。
  • 筛选最新日期:通过分组聚合得到每个ID的最大日期,再合并回原表筛选出对应行,缩小候选范围。
  • 计算测试成功数:在最新日期范围内,按ID+Test分组统计总成功数,定位每个ID下的最优测试。
  • 最终筛选:通过合并最优测试的ID和Test标识,从原表提取所有对应行,完整保留Experiment Parameters等原始字段。

输出结果

ID Test  Date Success Experiment Parameters
0  A  e2z  2022       1                   awa
1  A  e2z  2022       0                   02s
2  B  r5t  2019       1                   efe
3  C  x3w  2023       0                   loa

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:37:35