Выберите элемент из списка в серии Pandas на основе другого столбца - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть Pandas DataFrame следующей формы:

  Name         Dates        Trigger
  John       [d1,d2,d3]     1
  Mike       [d4]           NaN
  Li         [d1,d4,d5]     2

, где строки в столбце Даты являются списками Python, где каждый элемент в списках является объектом DateTime (например, «2019-08-15»).

Моя конечная цель - получить массив с различиями (в днях) между датами в позиции индекса, упомянутой в Триггере , в результате чего появится новый столбец, подобный:

       Date_diff
   [d2-d1,d2-d2,d2-d3]
   [NaN]/d4
   [d5-d1,d5-d4,d5-d5]

Независимо от того, что я пробовал, мне всегда не удавалось правильно определить правильный элемент в списке на основе последнего столбца. Есть предложения?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2019

После обработки NaN работает следующее решение:

df.apply(lambda row: row.Dates[row.Trigger], axis=1)
0 голосов
/ 05 ноября 2019

Из того, что я понимаю, вы хотите взять Trigger в качестве индекса в списке элементов, из которых вычитаются другие элементы. Я до сих пор не знаю, что вы пытаетесь сказать для строки, соответствующей Майку.

  1. Создайте list1 третьего столбца из вашего фрейма данных (триггер)
  2. Создайте list2 второго столбца из вашего фрейма данных (Даты)
  3. Создайте пустой list3, который будет вашим столбцом Dates_Difference.
  4. Перечислите list1 с переменнойi и переберите list2 внутри него с переменной j и продолжайте добавлять list2[i] - list2[j] к list3. Обработайте случаи, когда i = NaN соответственно.
  5. Вставьте list3 в качестве нового столбца в ваш фрейм данных с именем Dates_diff

Надеюсь, это поможет:)

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