每n行重复随机数

时间:2018-11-28 07:52:34

标签: python pandas

我有一个包含2列的大型数据框,如下所示:

                    dtm                SoC
      0     2018-03-01 00:00:00 +0000   39
      1     2018-03-01 00:00:01 +0000   39
      2     2018-03-01 00:00:02 +0000   39
      3     2018-03-01 00:00:03 +0000   39
     ...               ...              ...
2678393     2018-04-01 00:59:53 +0100   39
2678394     2018-04-01 00:59:54 +0100   39
2678395     2018-04-01 00:59:55 +0100   39
2678396     2018-04-01 00:59:56 +0100   39
2678397     2018-04-01 00:59:57 +0100   39
2678398     2018-04-01 00:59:58 +0100   39
2678399     2018-04-01 00:59:59 +0100   39

SoC列是一个介于0到40之间的随机生成的数字。我希望它是一个不同的随机数,每86400行重复一次(并且对于整个数据帧来说不一样)。

更清楚:

-行0-86399第一个随机数

-行86400-172800第二个随机数

-等

我正在尝试df['SoC']=np.repeat(random.randint(0,40),len(df)/86400),但出现错误“值的长度与索引的长度不匹配”

想法?预先谢谢你

2 个答案:

答案 0 :(得分:2)

首先创建带有参数大小且底数为整数的数组,然后创建AT TIME ZONE

repeat

答案 1 :(得分:0)

另一种方式:

arr = np.arange(40)
np.random.shuffle(arr)
arr

array([15, 30, 21,  3, 10, 19, 13, 31,  5, 32,  1, 39, 24,  6, 12,  7, 22,
       38, 27, 20, 25, 35, 14, 28, 33, 18, 29, 17, 37, 36, 34,  8,  2,  0,
        4, 11, 16, 23, 26,  9])

df['SoC'] = np.repeat(arr, 86400)