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

MATLAB中基于C1列状态生成C2列持续标记的逻辑实现问题

问题解决方法

你的现有代码仅对C1值为1和-1的行单独赋值,没有处理两次切换点中间C1为0的行,你可以通过状态标记的逻辑实现需求:

核心逻辑

维护一个全局状态变量记录当前C2应该保持的值:

  • 初始状态为0
  • 遍历到C1=1时,状态切换为1
  • 遍历到C1=-1时,状态切换为0
  • 每一行的C2直接取当前状态值即可

代码示例

MATLAB 实现

state = 0;
row_num = length(C1);
C2 = zeros(row_num, 1);
for i = 1:row_num
    if C1(i) == 1
        state = 1;
    elseif C1(i) == -1
        state = 0;
    end
    C2(i) = state;
end

Python Pandas 实现

遍历实现(逻辑清晰易理解)

import pandas as pd

state = 0
c2_res = []
for c1_val in df["C1"]:
    if c1_val == 1:
        state = 1
    elif c1_val == -1:
        state = 0
    c2_res.append(state)
df["C2"] = c2_res

向量化实现(无需循环,适合大数据量)

# 将C1中的0替换为空值后向前填充,填充值为1时C2取1,否则取0
df["C2"] = df["C1"].replace(0, pd.NA).ffill().fillna(0).eq(1).astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:54:02