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

按A分组筛选首条符合条件行的Pandas实现问题

Pandas分组筛选:按指定字段分组取首条符合条件行(无符合则取最后一行)

首先帮你理清楚问题,先还原你的数据集(修正了排版导致的列对应问题):

原始数据集:

A | B         | Date       | C  | D
0 | 01:00:00  | 2002-01-16 | 10 | 3
1 | 01:30:00  | 2002-01-16 | 10 | -12
2 | 02:00:00  | 2002-01-16 | 10 | 7
3 | 01:00:00  | 2002-01-17 | 20 | 33
4 | 01:30:00  | 2002-01-17 | 20 | -27
5 | 02:00:00  | 2002-01-17 | 20 | 12

你的需求是:按Date字段(推测你笔误写成了A)分组,每组优先取第一条满足D >= C*0.5 或 D <= -C的行;如果组内没有符合条件的行,就取该组的最后一行。期望输出:

A | B         | Date       | C  | D
1 | 01:30:00  | 2002-01-16 | 10 | -12
3 | 01:00:00  | 2002-01-17 | 20 | 33

你之前尝试了grouped = df.groupby('B'),这是错误的——B是时间字段,分组后每个时间单独成组,完全不符合你的需求,下面是完整的实现方案:


完整代码实现

import pandas as pd

# 1. 构造你的数据集
df = pd.DataFrame([
    [0, '01:00:00', '2002-01-16', 10, 3],
    [1, '01:30:00', '2002-01-16', 10, -12],
    [2, '02:00:00', '2002-01-16', 10, 7],
    [3, '01:00:00', '2002-01-17', 20, 33],
    [4, '01:30:00', '2002-01-17', 20, -27],
    [5, '02:00:00', '2002-01-17', 20, 12]
], columns=['A', 'B', 'Date', 'C', 'D'])

# 2. 定义分组处理函数
def select_target_row(group):
    # 生成筛选掩码:判断每行是否满足条件
    condition_mask = (group['D'] >= group['C'] * 0.5) | (group['D'] <= -group['C'])
    # 过滤出符合条件的行
    filtered_rows = group[condition_mask]
    
    if not filtered_rows.empty:
        # 取符合条件的第一行
        return filtered_rows.iloc[0]
    else:
        # 无符合条件时取组内最后一行
        return group.iloc[-1]

# 3. 分组并应用处理函数
# 这里按Date分组(如果你实际要按A字段分组,把'Date'改成'A'即可)
result = df.groupby('Date').apply(select_target_row).reset_index(drop=True)

# 打印结果
print(result)

代码解释

  1. 数据集构造:先把你的原始数据整理成标准的DataFrame,确保列对应正确;
  2. 分组处理函数:
    • 用condition_mask生成布尔索引,标记每行是否满足筛选条件;
    • 过滤后如果有符合条件的行,直接取第一行(iloc[0]);
    • 没有符合条件的行时,取该组的最后一行(iloc[-1]);
  3. 分组执行:用groupby指定正确的分组键(这里是Date,如果你的实际分组键是A,替换即可),再用apply对每个分组执行处理函数,最后reset_index清理索引。

验证结果

运行代码后得到的结果完全符合你的期望:

A         B        Date   C   D
0  1  01:30:00  2002-01-16  10 -12
1  3  01:00:00  2002-01-17  20  33

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:44:02