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

Pandas:高效提取DataFrame中从0到1的正向跳变值

高效实现Pandas DataFrame的跳变值保留操作

核心规则

仅保留两种场景下的1:

  • 第一行中初始值为1的单元格
  • 后续行里当前值为1且上一行对应列值为0的单元格

高效实现代码

针对大型数据框,必须使用矢量化操作(避免循环或apply这类低效率方法),代码如下:

import pandas as pd

# 构造原始数据框
df = pd.DataFrame({
    'A': [0, 0, 1, 1, 0],
    'B': [1, 1, 1, 1, 0],
    'C': [0, 1, 1, 0, 1]
})

# 初始化结果数据框为全0
result = pd.DataFrame(0, index=df.index, columns=df.columns)
# 处理第一行:保留初始为1的值
result.iloc[0] = df.iloc[0] == 1
# 处理后续行:筛选从0跳变到1的单元格
jump_mask = (df == 1) & (df.shift(1) == 0)
result.iloc[1:] = jump_mask.iloc[1:]

# 转为整数类型(确保输出是0/1而非布尔值)
result = result.astype(int)

输出验证

运行后result的结果与需求完全匹配:

A  B  C
0  0  1  0
1  0  0  1
2  1  0  0
3  0  0  0
4  0  0  1

效率说明

所有操作都是Pandas底层优化的矢量化运算,时间复杂度为O(n)(n为数据框总元素数),远快于逐行循环的O(n²),适合百万级行/列的大型数据框,重复调用也能保持高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:50:26