как разбить столбец с условием - PullRequest
0 голосов
/ 09 декабря 2018

Итак, я хотел бы знать, как я могу разделить столбец с условиями.Моя идея - изучить активность пользователя, но для этого мне нужно поставить условие.У меня есть датафрейм:

df = pd.DataFrame({'User': ["juan","juan","juan","juan","petter","petter","petter","petter","petter","petter","petter","petter","ana","ana","ana","ana","raul","raul","raul","raul"],
               'time': ["2/1/2019","3/1/2019","4/1/2019","6/1/2019","2/1/2019","5/1/2019","6/1/2019","10/1/2019","11/1/2019","12/1/2019","13/1/2019","14/1/2019","8/1/2019","10/1/2019","15/1/2019","20/1/2019","15/1/2019","17/1/2019","18/1/2019","19/1/2019"],
                'activity': ["fly", "hotel","car","jump","fly", "hotel","jump","car","fly", "car","hotel","car","car", "hotl","car","hotel","fly", "hotel","car","car"],
              '%timeper_user': ["4 days","4 days","4 days","4 days","8 days","8 days","8 days","8 days","3 days","3 days","3 days","3 days","12 days","12 days","12 days","12 days","4 days","4 days","4 days","4 days"]})

, как вы увидите, у каждого пользователя есть столбец (время) и еще один столбец (% timeper_user) для каждого пользователя.затем столбец (активность), который представляет собой действие, которое каждый пользователь выполняет в течение определенного периода времени.Идея состоит в том, чтобы сделать «условное разделение», которое будет происходить с каждым действием в отдельном столбце.Act1, Акт 2, ACT3, ACT3.Но когда пользователь выполняет действие вне времени (время +% timeper_user), поместите действия в разные столбцы, такие как: Act21, Act 22, Act 23, Act24. Мне бы хотелось, чтобы это было так:

df2 = pd.DataFrame({'User': ["juan","petter","ana","raul"],
              "act1":["fly","fly","car","fly"],
              "act2":["hotel","hotel","hotel","hotel"],
              "act3":["car","jump","car","car"],
              "act4":["jump","car","hotel","car"],
              "actn":["","","",""],
              "act21":["","fly","",""],
              "act22":["","car","",""],
              "act23":["","hotel","",""],
              "act24":["","car","",""]})

(DF2) - это вывод, что то, что я хочу. Увидеть, что пользователь Petter превысил время (02.02.2017 + 8 дней) = 01.10.2009.Таким образом, с 01.11.2009 действия помещены в Act21, Act22, Act23, Act24.У меня много пользователей, поэтому я не знаю, как сделать функцию, которая выполняет это и берет все (пользователь за пользователем).если бы вы могли мне помочь, я был бы очень признателен.Спасибо

1 Ответ

0 голосов
/ 09 декабря 2018

Идея есть.если пользователь создает событие в диапазоне (время +% времени на пользователя), это означает, что все действия, принадлежащие ему, входят в диапазон действий 1 (act1, Act12, Act13, Act 14).если дата больше, это означает, что пользователь будет вводить действие 2 (действие 21, действие 22, действие 23, действие 24).Проще говоря ... если Петтер едет из США в Мадрид, он может пойти в гостиницу, взять напрокат машину и попробовать полет.но где-то там, когда он возвращается в США, Петтер, возможно, покупает второй рейс (который будет входить в действие дальности 2 (акт 21, акт22, акт23, акт24). Если вы запускаете df ... Это тот кадр данных, который у меня есть.. а df2 это данные которые я хочу сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...