Самый простой способ найти разницу между двумя датами в пандах

Я пытаюсь найти разницу между двумя датами в мультииндексном фрейме данных, который является результатом операции сводной таблицы.

Фрейм данных содержит три столбца. Первый — measurement, второй — end date, а третий — start date.

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

Pt["min"]["start_date"] = 0, но когда я пытаюсь вычесть две даты, я получаю строковую ошибку, и добавление .Dt.Days в конец каждого столбца также приводит к ошибке.

Каков самый простой способ найти разницу в днях между двумя датами в мультииндексном фрейме данных pandas?


person yoshiserry    schedule 04.07.2016    source источник


Ответы (1)


Вы можете выбрать Multiindex в столбцах с помощью tuples и вычесть столбцы:

print (df)
     a                        
  meas         end       start
0    7  2015-04-05  2015-04-01
1    8  2015-04-07  2015-04-02
2    9  2015-04-14  2015-04-04

#if dtypes not datetime
df[('a','end')] = pd.to_datetime(df[('a','end')])
df[('a','start')] = pd.to_datetime(df[('a','start')])

df[('a','diff')] = df[('a','end')] - df[('a','start')]

print (df)
     a                              
  meas        end      start    diff
0    7 2015-04-05 2015-04-01  4 days
1    8 2015-04-07 2015-04-02  5 days
2    9 2015-04-14 2015-04-04 10 days

Если нужно вывести в days:

df[('a','diff')] = (df[('a','end')] - df[('a','start')]).dt.days
print (df)
     a                           
  meas        end      start diff
0    7 2015-04-05 2015-04-01    4
1    8 2015-04-07 2015-04-02    5
2    9 2015-04-14 2015-04-04   10
person jezrael    schedule 04.07.2016