У меня есть pandas DataFrame операций в моем приложении:
+----------+-------------+
| UserName | StartEdit |
+----------+-------------+
| John | 12-Jul-2015 |
| David | 16-Aug-2015 |
| Katie | 20-Aug-2015 |
| Cristin | 2-Sep-2015 |
| Katie | 12-Sep-2015 |
| John | 23-Nov-2015 |
| David | 2-Jan-2016 |
| David | 3-Jan-2016 |
| John | 10-Feb-2016 |
| Steven | 13-Mar-2016 |
| Steven | 14-Mar-2016 |
+----------+-------------+
Я хотел бы создать еще один столбец с UserTeam.Я знаю, что Кэти, Кристин и Стивен всегда были в одной команде:
owners_teams = {"Katie":"A", "Cristin":"B", "Steven":"C"}
Поэтому, когда я делаю df["UserTeam"] = df["UserName"].map(owners_teams)
, я получаю:
+----------+-------------+----------+
| UserName | StartEdit | UserTeam |
+----------+-------------+----------+
| John | 12-Jul-2015 | NaN |
| David | 16-Aug-2015 | NaN |
| Katie | 20-Aug-2015 | A |
| Cristin | 2-Sep-2015 | B |
| Katie | 12-Sep-2015 | A |
| John | 23-Nov-2015 | NaN |
| David | 2-Jan-2016 | NaN |
| David | 3-Jan-2016 | NaN |
| John | 10-Feb-2016 | NaN |
| Steven | 13-Mar-2016 | C |
| Steven | 14-Mar-2016 | C |
+----------+-------------+----------+
Теперь я также знаю, что:
Джон перешел с A
на C
на 01-Jan-2016
Дэвид перешел с B
на C
на 12-Dec-2015
changes = [("John", "01-Jan-2016", "A", "C"), ("David", "12-Dec-2015", "B", "C")]
Я знаю, как сделать это с apply
и циклически проходить по строкам и жестко кодировать все правила, но я не думаю, что это эффективно.Как мне сделать это векторизованным способом для большого количества пользователей?
Ожидаемый результат:
+----------+-------------+----------+
| UserName | StartEdit | UserTeam |
+----------+-------------+----------+
| John | 12-Jul-2015 | A |
| David | 16-Aug-2015 | B |
| Katie | 20-Aug-2015 | A |
| Cristin | 2-Sep-2015 | B |
| Katie | 12-Sep-2015 | A |
| John | 23-Nov-2015 | A |
| David | 2-Jan-2016 | C |
| David | 3-Jan-2016 | C |
| John | 10-Feb-2016 | C |
| Steven | 13-Mar-2016 | C |
| Steven | 14-Mar-2016 | C |
+----------+-------------+----------+