Python 创建匹配数据帧长度的重复值列

Python create column of repeated values that matches length of dataframe

我需要创建一个重复初始值 32 次的列,然后将其增加 1 并重复 32 次,依此类推,直到达到原始数据帧的长度。

我尝试执行以下操作(以及其他次要变体):

timestamps = [1506447570]
i = 0
k = 0
for i in range(len(df)):
    timestamps.append(timestamps[i])
    k+=1
    i+= 1
    if k >31:
        timestamps.append(timestamps[i]+1)
        k =0

这是前 2 次重复的样子:

timestamps = [
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447570,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571,
1506447571]

所以它应该继续重复这个模式,直到它是数据帧的长度。这些值是 unix 时间戳,数据以 32HZ 的频率收集,所以我只是想制作一个简单的时间戳列。

之前给这个:)

acc = 2
seedStamp = 1506447570
timeStamps = []

for i in range(acc):
  for k in range(33):
    timeStamps.append(seedStamp)
    if k >31:
      seedStamp += 1
      timeStamps.append(seedStamp)

print('--')

for i in timeStamps:
  print(i)

您可以在 df.index 上使用 len 来获取数据帧的长度。从那里,您可以迭代该长度的范围并使用除法和 floor 来更改数字。

from math import floor
val = 1506447570

df['stamps'] = [val + floor(i / 32) for i in range(len(df.index))]