Это «проблема недели ISO 53».
У меня есть экземпляр Series
панды со значениями индекса, представляющими номер недели ISO:
import pandas as pd
ts = pd.Series([1,1,1,2,3,1,2], index=[1,1,2,2,52,53,53])
Я хочу, чтобы случайным образом ив равной степени замените все индексы index = 53
на index = 52
или index = 1
.
. Для вышеперечисленного это может быть:
import pandas as pd
ts = pd.Series([1,1,1,2,3,1,2], index=[1,1,2,2,52,52,1])
или
import pandas as pd
ts = pd.Series([1,1,1,2,3,1,2], index=[1,1,2,2,52,1,52])
например. Как мне это сделать, пожалуйста?
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ
В NumPy я использовал следующеедля этого:
from numpy import where
from numpy.random import shuffle
indices = where(timestamps == 53)[0]
number_of_indices = len(indices)
if number_of_indices == 0:
return # no iso week number 53 to fix.
shuffle(indices) # randomly shuffle the indices.
midway_index = number_of_indices // 2
timestamps[indices[midway_index:]] = 52 # precedence if only 1 timestamp.
timestamps[indices[: midway_index]] = 1
, где массив timestamps
- это значение панды index
.