我有一个包含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)
,但出现错误“值的长度与索引的长度不匹配”
答案 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)