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

如何实现Pandas中列值依次小于的通用高效筛选方法?

优化固定模式的DataFrame连续递增筛选逻辑

当前实现代码:

import pandas as pd

dt = pd.DataFrame({
    '1st':[1,0,1,0,1],
    '2nd':[2,1,2,1,2],
    '3rd':[3,0,3,2,3],
    '4th':[4,3,4,3,4],
    '5th':[5,0,5,4,5],
    'minute_traded':[6,5,6,5,6]
})

dt = dt[
    (dt['1st'] < dt['2nd']) & 
    (dt['2nd'] < dt['3rd']) & 
    (dt['3rd'] < dt['4th']) & 
    (dt['4th'] < dt['5th']) & 
    (dt['5th'] < dt['minute_traded'])
]

print(dt)

执行结果:

1st  2nd  3rd  4th  5th  minute_traded
0    1    2    3    4    5              6
2    1    2    3    4    5              6
3    0    1    2    3    4              5
4    1    2    3    4    5              6

针对这种只需变更分析列的固定递增筛选场景,有两种更简洁的优化方案:

方案1:利用diff批量判断连续递增

通过提取需要校验的列序列,用diff计算相邻列的差值,再判断所有差值是否大于0,实现批量筛选:

import pandas as pd

dt = pd.DataFrame({
    '1st':[1,0,1,0,1],
    '2nd':[2,1,2,1,2],
    '3rd':[3,0,3,2,3],
    '4th':[4,3,4,3,4],
    '5th':[5,0,5,4,5],
    'minute_traded':[6,5,6,5,6]
})

# 只需修改这里的列列表即可切换分析目标
check_columns = ['1st', '2nd', '3rd', '4th', '5th', 'minute_traded']

# 计算相邻列的差值,过滤出所有连续递增的行
mask = dt[check_columns].diff(axis=1).iloc[:, 1:] > 0
dt_filtered = dt[mask.all(axis=1)]

print(dt_filtered)

方案2:封装成函数,复用性更强

如果需要频繁切换分析列,把筛选逻辑封装成函数,调用时只需传入目标列列表:

import pandas as pd

def filter_consecutive_increasing(df, column_sequence):
    # 计算相邻列的差值,确保每一列都严格小于下一列
    diff_matrix = df[column_sequence].diff(axis=1).iloc[:, 1:] > 0
    return df[diff_matrix.all(axis=1)]

dt = pd.DataFrame({
    '1st':[1,0,1,0,1],
    '2nd':[2,1,2,1,2],
    '3rd':[3,0,3,2,3],
    '4th':[4,3,4,3,4],
    '5th':[5,0,5,4,5],
    'minute_traded':[6,5,6,5,6]
})

# 调用函数时指定列序列即可
target_columns = ['1st', '2nd', '3rd', '4th', '5th', 'minute_traded']
dt_filtered = filter_consecutive_increasing(dt, target_columns)

print(dt_filtered)

优化优势

  • 灵活性高:修改分析列时只需调整列列表,无需逐行修改条件表达式
  • 代码简洁:避免重复编写大量(a < b) & (b < c)式的冗余代码
  • 可扩展性强:支持任意长度的列序列,不管是5列还是更多列都能兼容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:15:29