Проблема:
У меня есть базовый фрейм данных python / pandas с идентификатором устройства ("Sarzs_no") и столбцом, основанным на времени дня ("Time_of_day", два значения: день / ночь).
![enter image description here](https://i.stack.imgur.com/qEauz.png)
К сожалению, время суток однозначно в терминах одной единицы может содержать оба значения (день и ночь). Однако он должен содержать только один.
Мне бы хотелось иметь решение для изменения значений времени дня для каждой единицы на основе количества отсчетов, которые она имеет для дня и ночи. Если он имеет больше значений для дня, чем его следует установить в качестве дня для всех своих значений, и наоборот.
![enter image description here](https://i.stack.imgur.com/3IDe7.png)
Я попытался составить формулу по этой проблеме:
def dayoftime(napszak_str):
sarzs = row["Sarzs_no"]
day = bfdataf[bfdataf["Sarzs_no"]==sarzs].groupby("Time_of_day").size()[0]
night = bfdataf[bfdataf["Sarzs_no"]==sarzs].groupby("Time_of_day").size()[0]
if day>=night:
return "day"
else:
return "night"
... и затем назовите это:
bfdataf["new_tod"] = bfdataf["Time_of_day"].apply(dayoftime)
Но, к сожалению, я получаю ошибки "index out of bound".
Не могли бы вы помочь мне решить эту проблему?
Спасибо!