Arhn - архитектура программирования

Мин., Макс., Средняя продолжительность Время csv

Я пытаюсь вычесть два столбца в CSV, чтобы создать третий столбец "Продолжительность" Время окончания - Время начала

Каждая строка также соответствует идентификатору пользователя.

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

Формат времени, например, такой: 2016-11-12 01:25:24+00 - 2016-11-12 01:25:20+00

До сих пор я сделал это

start_stop_sessions = pd.read_csv("start_stop_sessions.csv", parse_dates
['time_x', 'time_y'])

start_stop_sessions['time_delta'] = start_stop_sessions.time_y.values -
start_stop_sessions.time_x.values

Duration = (start_stop_sessions.time_delta)
print (Duration)
sys.stdout = open('Duration.csv', 'w')

Durationlist = ("Duration.csv") 
max_value = max(Durationlist)
min_value = min(Durationlist)

Я делаю это правильно?

ТЕСТОВЫЕ ДАННЫЕ

time_x, anonymous_id, time_y

2016-11-20 18:35:57+00, 1, 2016-11-20 19:03:31+00

2016-11-21 19:33:06+, 2, 2016-11-21 19:45:47+00

2016-11-21 19:22:52+00, 3, 2016-11-21 19:26:02+00

1) Мне нужно было бы создать 4-й столбец Duration

2) Список MIN, MAX, AVG для этого столбца продолжительности

27.03.2017

  • Вы проверили это? 27.03.2017

Ответы:


1

Я думаю, вам нужно to_csv для записи файла к csv:

df = pd.read_csv("start_stop_sessions.csv", parse_dates=['time_x','time_y'])

df['Duration'] = df['time_y'] - df['time_x']
#same as
#df['Duration'] = df['time_y'].sub(df['time_x'])
print (df)
               time_x  anonymous_id              time_y  Duration
0 2016-11-20 18:35:57             1 2016-11-20 19:03:31  00:27:34
1 2016-11-21 19:33:06             2 2016-11-21 19:45:47  00:12:41
2 2016-11-21 19:22:52             3 2016-11-21 19:26:02  00:03:10

df.to_csv('start_stop_sessions.csv', index=False)

Затем получите min, max и mean столбца Duration — вывод timedelta:

print (df['Duration'].min())
0 days 00:03:10

print (df['Duration'].max())
0 days 00:27:34

print (df['Duration'].mean())
0 days 00:14:28.333333

Также, если нужно преобразовать timedelta в секунды, нужно total_seconds< /а>:

df['Duration'] = (df['time_y'] - df['time_x']).dt.total_seconds()
print (df)
               time_x  anonymous_id              time_y  Duration
0 2016-11-20 18:35:57             1 2016-11-20 19:03:31    1654.0
1 2016-11-21 19:33:06             2 2016-11-21 19:45:47     761.0
2 2016-11-21 19:22:52             3 2016-11-21 19:26:02     190.0

df.to_csv('start_stop_sessions.csv', index=False)

print (df['Duration'].min())
190.0
print (df['Duration'].max())
1654.0
print (df['Duration'].mean())
868.3333333333334
27.03.2017
  • Вывод, который я получаю для вычитания первой строки, похож на 890000000000, а как насчет использования time_delta? 27.03.2017
  • Какая у вас версия панды? print (pd.show_versions()) 27.03.2017
  • Я думаю, что есть проблема. Последняя версия 0.19.2. Возможен ли апгрейд? 27.03.2017
  • Это работает, но есть ли способ закрыть конец после секунд 0 дней 00:14:50.000000000 27.03.2017
  • Я добавляю решение, если нужно вывести в секундах. 27.03.2017
  • Как удалить конечные 000 после секунд? 00:14:50.000000000 27.03.2017
  • Вы можете попробовать округлить - df['Duration'] = ((df['time_y'] - df['time_x'])).dt.round('S'), но не проверено, потому что у меня нет замыкающего 0 27.03.2017
  • Хм, это ничего не меняет, будет ли работать datetime.timedelta? 27.03.2017
  • Вроде есть какие-то nanoseconds, что возвращают df['Duration'] = ((df['time_y'] - df['time_x'])).astype(str)? Все значения заканчиваются 0 ? 27.03.2017
  • И тогда вы можете разделить на . и удалить конечные 0 - df['Duration'] = ((df['time_y'] - df['time_x'])).astype(str).str.split('.').str[0] - вывод не timedelta, а строка. 27.03.2017
  • Это решает конечные 00, но затем влияет на максимальное, среднее и среднее значение. Поскольку он ожидает числовое 27.03.2017
  • Вы правы, нужно преобразовать в timedelta - надеюсь, без трейлинга 0 - df['Duration'] = pd.to_timedelta(((df['time_y'] - df['time_x'])).astype(str).str.split('.').str[0]) 27.03.2017
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..