Вычисление промежутка времени между датами по вертикали в python / pandas dataframe - PullRequest
0 голосов
/ 09 мая 2020

Система: WIN10

IDE: Код Visual Studio

Язык: Python версия 3.7.6

Библиотека: pandas версия 1.0.1

История пользователя:

Я пытаюсь подсчитать время между даты в фрейме данных при условии: «Имя». Хотя во фрейме данных есть несколько столбцов, которые мне нужно сохранить, я пытаюсь выяснить, как отсчитывать время вниз во фрейме данных, который отсортирован по «Имя» и «Дата» по мере появления новых имен и только между новыми экземплярами / наблюдениями. для этого человека.

Пример

df.head()

enter image description here

Предполагаемый

enter image description here

В предполагаемом примере это показывает, что, например, первая тренировка Мелвина Херда (вымышленные имена): Уровень I = 0, при переходе от Уровня I к Уровню II у него в этом примере 74 дня, и так далее ...

Были предприняты шаги:

  1. поиск в StackOverflow примеров временных рядов
  2. попытка использования сводных функций для обратного плавления уровней обучения в столбцы и вычислить дату
  3. проанализировал вывод номера два, но он неприемлем для анализа
  4. Я пробовал использовать этот метод, но он учитывает время предыдущего сотрудника и не учитывает то, что мне нужно это для каждого отдельный сотрудник:

    df4 ['day_diff'] = df4 ['Date'] \ .diff (). dt.days.fillna (0)

Ответы [ 2 ]

0 голосов
/ 09 мая 2020

Я нашел решение этой проблемы:

# calculate days between 'Event' by employee: 'Time Lapse'
df['Time Lapse'] = d4.groupby(['Name', 'Training Level'])['Date'] \
                            .diff().dt.days.fillna(0)

Спасибо всем, кто пытался помочь.

0 голосов
/ 09 мая 2020

Если вы не против использования базовых массивов numpy:

d = df['Date'].values  # get numpy arrays
df.loc[1:, 'Lapsed Time'] = d[1:] - d[:-1]  # first day is NaN, because no 0th day.

Сделайте это для каждой группы (группа по имени и т. Д. c.) И соберите результаты.

...