Pandas DataFrame如何将指定列相邻两个1之间的行值统一设为1
Pandas DataFrame 行值批量修改解决方案
核心实现逻辑:通过对on&off列的1值做累计求和,判断累计和的奇偶性标记需要填充为1的区间,同时包含结束点的1值,即可快速实现需求,全程为向量化操作,大数据量下效率远高于逐行遍历。
步骤1:创建示例DataFrame
import pandas as pd df = pd.DataFrame({'ts_val' : [0,0,-1,-1,-1,-1,0,0,0,0,0], 'on&off' : [0,0,1,0,0,0,1,0,1,0,1] })
步骤2:核心处理代码
# 计算on&off列的1值累计和 cumsum_val = df['on&off'].cumsum() # 奇数累计和区间 + 结束点的1位置全部设为1 df['on&off'] = ((cumsum_val % 2 == 1) | (df['on&off'] == 1)).astype(int)
处理后结果
ts_val on&off 0 0 0 1 0 0 2 -1 1 3 -1 1 4 -1 1 5 -1 1 6 0 1 7 0 0 8 0 1 9 0 1 10 0 1
内容的提问来源于stack exchange,提问作者AfterFray
相关产品推荐
相关产品推荐

