Переписать groupby, расположить и изменить с помощью if-else из R в Python - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь переписать свой код с 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() лучшим способом сделать это?Пожалуйста, дайте мне знать - поскольку я, вероятно, буду делать это совсем немного с моим преобразованием кода.

...