You need to enable JavaScript to run this app. Pandas中基于数值趋势过滤行:筛选含多个同正负演变值的记录
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中基于数值趋势过滤行:筛选含多个同正负演变值的记录

pandas 多年度趋势行筛选实现方案

可量化的判定规则

先将筛选要求转化为机器可识别的判断标准,与示例结果完全对齐:

  • 逐行遍历所有Evol_前缀的年度演变值列
  • 分别统计该行中大于0的正向值数量、小于0的负向值数量,0值不参与任何方向的计数
  • 只要任意一个方向的计数≥2(即存在多个同属性值),就保留该行,其余行过滤

规则匹配度验证:

  • Juice Factory行:正向值1个、负向值1个,计数不满足要求,过滤
  • Food Factory行:负向值2个,满足保留条件
  • Cloth Factory行:正向值1个,其余为0值,计数不满足要求,过滤

代码实现

import pandas as pd

# 复现示例原始数据表
df = pd.DataFrame({
    "Client": ["Juice Factory", "Food Factory", "Cloth Factory"],
    "Evol_2019": [0, -1, 2],
    "Evol_2020": [1, 0, 0],
    "Evol_2021": [-1, -2, 0]
})

# 自动识别所有演变值列,后续新增年度列时无需修改代码逻辑
evol_cols = df.columns[df.columns.str.startswith("Evol_")]

# 生成逐行筛选掩码
pos_count = (df[evol_cols] > 0).sum(axis=1)
neg_count = (df[evol_cols] < 0).sum(axis=1)
keep_condition = (pos_count >= 2) | (neg_count >= 2)

# 得到筛选后的结果
filtered_df = df[keep_condition]

灵活调整提示

  • 若需要修改“多个同属性值”的判断阈值,比如要求连续3年同方向才保留,只需将判断条件中的>=2替换为对应阈值即可
  • 该逻辑不会将0值误判为正向或负向属性,完全贴合示例中的判断逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 01:24:04