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

如何在Pandas中对比当前行与前一行值创建趋势列?

Pandas实现相邻行趋势计算的方法

完整实现代码

import pandas as pd
import numpy as np

# 构造示例数据集
data = [
    {'year': 2017, 'v1': 0.3, 'v2': 0.1},
    {'year': 2018, 'v1': 0.1, 'v2': 0.1},
    {'year': 2019, 'v1': -0.2, 'v2': 0.5},
    {'year': 2020, 'v1': np.nan, 'v2': -0.3},
    {'year': 2021, 'v1': 0.8, 'v2': 0.0}
]
df = pd.DataFrame(data)

# 定义需要计算趋势的字段列表
calc_cols = ['v1', 'v2']

for col in calc_cols:
    # 计算当前行与上一行的差值,首行、涉及空值的行差值自动为NaN
    col_diff = df[col].diff()
    # 配置判断条件与对应返回值
    conditions = [
        col_diff > 0,
        col_diff < 0,
        col_diff == 0
    ]
    choices = ['increase', 'decrease', 'equal']
    # 生成趋势列,不满足条件的场景默认返回NaN
    df[f'trend_{col}'] = np.select(conditions, choices, default=np.nan)

# 输出结果
print(df)

逻辑说明

  • 调用diff()方法计算相邻行差值时,首行没有上一行参考,会自动返回NaN,符合首行趋势值为NaN的要求
  • 如果当前行或者上一行的值为NaN,差值计算结果也为NaN,匹配不到任何判断条件时会走default逻辑返回NaN,符合空值对应的规则
  • 剩余正常数值的行,会根据差值的正负、等于0的情况返回对应的趋势标识

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:57:03