如何为DataFrame新增列,给指定行区间设置不同取值
实现代码方案
方法1:遍历区间赋值(易读易调整)
# 定义所有需要赋值为0的行号区间(默认行号为0开始的连续索引) zero_ranges = [(2880, 5760), (12960, 15840), (23040, 25920)] # 先给新列所有行默认赋值为1 df['col_new'] = 1 # 逐个区间匹配赋值为0 for start, end in zero_ranges: df.loc[df.index.between(start, end, inclusive='both'), 'col_new'] = 0
方法2:向量化判断(代码更简洁)
import numpy as np df['col_new'] = np.where( (df.index.between(2880,5760)) | (df.index.between(12960,15840)) | (df.index.between(23040,25920)), 0, 1 )
注意事项
- 如果你提到的行号是从1开始计数的自然行号,把所有区间的起止值各减1即可,调整后的区间为
[(2879, 5759), (12959, 15839), (23039, 25919)] - 如果你的df当前索引不是0开始的连续整数,先执行重置索引操作再运行上面的代码:
df = df.reset_index(drop=True) - 两种方案都完全适配28800行的数据规模,无性能问题
内容的提问来源于stack exchange,提问作者Jewel_R
相关产品推荐
相关产品推荐

