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

如何基于Pandas实现分类型整数DataFrame的仅变化检测类梯度计算

分类数据的变化检测(替代diff的扁平化结果)

你不需要特意将数据转为分类类型也能实现需求,当然转分类后也能处理,下面提供两种可行方案:

方案一:直接生成0/1变化标记(推荐)

利用diff()计算相邻值的差值,再通过判断差值是否非0来标记变化(1=变化,0=未变化),步骤简洁高效:

import pandas as pd

# 初始化你的DataFrame
mydf = pd.DataFrame([[0,0,0,1,0,2,2,5,2,4], 
                    [0,1,0,0,2,2,4,5,3,3], 
                    [1,1,1,1,2,2,0,4,4,4]])

# 按行计算相邻列的变化标记
change_df = mydf.diff(axis=1).ne(0).astype(int)
# 将第一列的缺失值(无前置列)填充为0
change_df = change_df.fillna(0)

print(change_df)

运行后会得到一个全为0和1的DataFrame,其中1表示当前列与前一列的分类值发生了变化,0表示未变化。

方案二:转为分类数据后处理

如果一定要先让Pandas识别为分类数据,也可以先转换类型再执行类似逻辑:

# 将DataFrame转为分类类型
mydf_cat = mydf.astype('category')

# 计算变化标记,逻辑和方案一一致
change_df_cat = mydf_cat.diff(axis=1).ne(0).astype(int)
change_df_cat = change_df_cat.fillna(0)

print(change_df_cat)

本质上分类数据的diff()是基于类别编码的差值计算,最终还是通过判断是否非0来标记变化,因此方案一更直接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:35:01