Взятие медианы двух значений даты и времени - PullRequest
0 голосов
/ 27 декабря 2018

Для приведенных ниже данных я хочу взять среднее значение или среднее время первых двух отметок времени в каждой строке, а затем вычесть эту третью отметку времени

I want to take the middle value of the first two timestamps and subract that by the third time stamp

Как лучше всего взять медианное значение или среднее значение двух временных меток?

ожидаемый результат в минутах - разница двух временных меток.

Это медиана илисреднее из первых двух минус третья отметка времени.

это среднее значение или отметка времени 2018-12-21 23:31:24.615 и 2018-12-21 23:31:26.659.

Как только я получу это значение, я хочу вычесть третью временную метку из 2018-12-21 23:31:27.975.Вывод будет представлять значение минут.

Ответы [ 2 ]

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

Предполагается, что df выглядит следующим образом:

df = pd.DataFrame(data={'time1':['2018-12-21 23:31:24.615','2018-12-22 01:33:26.015'],'time2':['2018-12-21 23:31:26.659','2018-12-22 01:33:32.865'],'time3':['2018-12-21 23:31:27.975','2018-12-22 01:59:05.136']})

    time1                   time2                   time3
0   2018-12-21 23:31:24.615 2018-12-21 23:31:26.659 2018-12-21 23:31:27.975
1   2018-12-22 01:33:26.015 2018-12-22 01:33:32.865 2018-12-22 01:59:05.136

Преобразовать 'to_datetime'

df[['time1','time2','time3']] = df[['time1','time2','time3']].apply(pd.to_datetime,errors='coerce')

, создав столбец со средним значением первых 2 столбцов:

my_list= []
for i in df.index:
    my_list.append(pd.to_datetime((df['time1'][i].value + df['time2'][i].value)/2.0))
df['avg'] = my_list

или просто:

df['avg'] = [(pd.to_datetime((df['time1'][i].value + df['time2'][i].value)/2.0)) for i in df.index]

нахождение разницы для column3 и avg:

(df.time3-df.avg).astype('timedelta64[m]')

output:

0     0.0
1    25.0
dtype: float64

PS: необходимо заменить столбцы time1, time2 и time3 с именами столбцов в вашем фрейме данных.

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

Если вам просто нужно среднее значение столбца datetime, вы можете сделать это:

df['linked_trip_pickup_departed_time'].astype('datetime64[ns]').quantile(.5)
df['pickup_departed_time_utc'].astype('datetime64[ns]').quantile(.5)

Это даст вам median для каждого столбца datetime.Теперь вы можете вычесть это.

...