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

如何通过遍历DataFrame行实现变量单调趋势判定并输出指定格式?

解决DataFrame行级变量单调趋势判断问题

核心问题分析

你需要对DataFrame的**每一行(对应单个变量的序列值)**判断其单调趋势,之前的is_monotonic_increasing/is_monotonic_decreasing是列级属性,无法直接适配行级判断;apply未成功大概率是逻辑未覆盖重复值、趋势分类不全等问题。


解决方案代码

1. 构造示例数据(模拟你的数据格式)

假设每行是一个变量,列是时间/观测顺序:

import pandas as pd

df = pd.DataFrame({
    'obs1': [1, 3, 2],
    'obs2': [2, 4, 5],
    'obs3': [3, 5, 3],
    'obs4': [4, 6, 1]
}, index=['var_A', 'var_B', 'var_C'])

2. 自定义趋势判断函数

针对单行序列,区分严格单调(无重复值)和非严格单调(允许重复)两种场景:

严格单调判断(无重复值)
def judge_strict_monotonic(row):
    # 去重避免重复值干扰严格单调判断
    unique_vals = row.drop_duplicates().tolist()
    if len(unique_vals) == 1:
        return 'constant'
    # 严格递增
    if all(unique_vals[i] < unique_vals[i+1] for i in range(len(unique_vals)-1)):
        return 'strictly_increasing'
    # 严格递减
    if all(unique_vals[i] > unique_vals[i+1] for i in range(len(unique_vals)-1)):
        return 'strictly_decreasing'
    # 非单调
    return 'non_monotonic'
非严格单调判断(允许重复)
def judge_non_strict_monotonic(row):
    # 非严格递增(允许相等)
    if all(row[i] <= row[i+1] for i in range(len(row)-1)):
        return 'non_strictly_increasing'
    # 非严格递减(允许相等)
    if all(row[i] >= row[i+1] for i in range(len(row)-1)):
        return 'non_strictly_decreasing'
    return 'non_monotonic'

3. 按行应用函数并输出结果

# 应用严格单调判断
df['strict_trend'] = df.apply(judge_strict_monotonic, axis=1)
# 应用非严格单调判断(可选)
df['non_strict_trend'] = df.apply(judge_non_strict_monotonic, axis=1)

print(df)

输出结果示例:

obs1  obs2  obs3  obs4       strict_trend       non_strict_trend
var_A     1     2     3     4  strictly_increasing  non_strictly_increasing
var_B     3     4     5     6  strictly_increasing  non_strictly_increasing
var_C     2     5     3     1      non_monotonic      non_monotonic

为什么之前的方法失效?

  • is_monotonic_increasing/is_monotonic_decreasing是列对象的属性,默认仅能判断列方向的单调性,若强行转置使用,也只能得到布尔值,无法输出你需要的分类格式。
  • 使用apply时如果未处理重复值、未覆盖常量/非单调等场景,会导致判断逻辑不完整,无法得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:48:18