Я пытаюсь переписать свой код с R на Python.Я с трудом переписываю часть своего кода, включающего group_by
, arrange
и mutate
.Я пробовал transform
и apply
в Python, но безуспешно.
В R мой код выглядит следующим образом:
S1 = S1 %>% group_by(ID) %>% arrange(Date) %>% mutate(New_Factor = ifelse(r_type == 5, (1+(Price/Last_Price)), Old_Factor/lag(Old_Factor)))
однако мне очень трудно переписать этот код на Python.Это то, что я до сих пор придумал:
s1['New_Factor'] = s1.groupby(['ID'],group_keys=False).apply(lambda g: (1+(Price/Last_Price)) if g.type == 5 else (Old_Factor/lag_value))
, где lag_value
определяется как:
lag_value = s1['Old_Factor'].shift(1)
ошибка, которую я получаю:
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
Мне также интересно, является ли .tranform()
лучшим способом сделать это?Пожалуйста, дайте мне знать - поскольку я, вероятно, буду делать это совсем немного с моим преобразованием кода.