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

如何对numpy.arange生成数组的元素使用zfill左补零至6位

问题描述
  • 现有一个包含days列的DataFrame,该列共5条记录,取值分别为492、12374、300、87、90
  • 初始需求为遍历每个条目,生成按30天为间隔拆分的天数数组,初始可正常运行的代码如下:
intervals_list = []
for i in df['days']:
  intervals = (np.arange(0,i,30))
  intervals_list.append(intervals)

上述代码运行符合预期,共生成5个数组存入intervals_list列表,其中对应天数300生成的数组内容为:

array([  0,  30,  60,  90, 120, 150, 180, 210, 240, 270])
  • 新需求为将所有数组内的数值统一处理为6位长度,计划使用zfill()方法在数字左侧补零至6位,但转换结果始终无法同步到原数组中,尝试过的错误实现如下:
for i in df['days']:
   intervals = (np.arange(0,i,30))
   for i in intervals:
      i = str(i).zfill(6)
  • 此外曾尝试在arange生成数组的过程中直接调用zfill方法,同样运行失败。
错误原因
  1. 内层循环里的i是遍历数组时取出的临时变量,给这个变量重新赋值,不会修改原数组里存储的实际内容
  2. np.arange默认生成整数类型数组,本身不支持直接存储字符串格式的补零结果,且整数类型不能直接调用字符串专属的zfill()方法,直接调用必然报错
可行实现方案

生成原始间隔数组后,批量将数值转为6位补零的字符串格式,再存入结果列表即可,两种常用写法可选:

写法1:存为普通Python列表(最易理解)

intervals_list = []
for day_val in df['days']:
    raw_intervals = np.arange(0, day_val, 30)
    # 批量转换为6位补零字符串
    formatted_intervals = [str(num).zfill(6) for num in raw_intervals]
    intervals_list.append(formatted_intervals)

写法2:保留numpy数组格式

如果需要后续继续用numpy的能力处理数组,可以直接用numpy的字符串处理接口生成字符串类型数组:

intervals_list = []
for day_val in df['days']:
    raw_intervals = np.arange(0, day_val, 30)
    # 先转字符串类型,再批量补零
    formatted_intervals = np.char.zfill(raw_intervals.astype(str), 6)
    intervals_list.append(formatted_intervals)

以取值300的记录为例,转换后的结果为['000000', '000030', '000060', '000090', '000120', '000150', '000180', '000210', '000240', '000270'],符合补零要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:45:49