Как преобразовать столбец DataFrame в дату в Pandas

  1. Функция Pandas to_datetime для преобразования столбца DataFrame в datetime
  2. DataFrame apply Метод преобразования столбца DataFrame в Datetime
  3. Методы преобразования преобразования столбца DataFrame в сравнение производительности по дате

Мы познакомим вас с методами преобразования столбца Pandas DataFrame в Python datetime.

  • Функция Pandas to_datetime().
  • Метод DataFrame apply для работы с элементами в колонке

В этой статье мы будем использовать тот же самый DataFrame, что и ниже.

>>> from datetime import datetime, timedelta
>>> from pandas import DataFrame
>>> df = DataFrame.from_items(
    [('Alfa', [1, 2, 3]), 
     ('Bravo', [4, 5, 6]), 
     ('Datetime', [datetime.strftime(datetime.now()-timedelta(days=_), "%m/%d/%Y, %H:%M:%S") for _ in range(3)])], 
    orient='index', 
    columns=['A', 'B', 'C']).T
>>> df
  Alfa Bravo              Datetime
A    1     4  12/07/2019, 14:08:55
B    2     5  12/06/2019, 14:08:55
C    3     6  12/05/2019, 14:08:55

Функция Pandas to_datetime для преобразования столбца DataFrame в datetime

Функция Pandas to_datetime преобразует данный аргумент в datetime.

pandas.to_datetime(param, format="")

Формат задает шаблон строки даты. То же самое с форматом в stftime или strptime в модуле Python datetime.

>>> df
  Alfa Bravo              Datetime
A    1     4  12/07/2019, 14:08:55
B    2     5  12/06/2019, 14:08:55
C    3     6  12/05/2019, 14:08:55
>>> df['Datetime'] = pd.to_datetime(df['Datetime'], format="%m/%d/%Y, %H:%M:%S")
>>> df
  Alfa Bravo            Datetime
A    1     4 2019-12-07 14:08:55
B    2     5 2019-12-06 14:08:55
C    3     6 2019-12-05 14:08:55

Функция to_datetime() не модифицирует данные DataFrame на месте, поэтому нам нужно присвоить возвращаемые Панды Series конкретному столбцу DataFrame.

to_datetime() Функция умна для преобразования в Datetime

Функция to_datetime() может выполнять преобразование в datetime умным способом без указания строки формата datetime. Она автоматически и умно найдет строковый шаблон.

>>> df['Datetime'] = pd.to_datetime(df['Datetime'])
>>> df
  Alfa Bravo            Datetime
A    1     4 2019-12-07 14:08:55
B    2     5 2019-12-06 14:08:55
C    3     6 2019-12-05 14:08:55
Предупреждение

Несмотря на то, что to_datetime может делать свою работу, не давая format умно, скорость преобразования намного ниже, чем при format.

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

Это может увеличить скорость разбора в 5~6 раз.

DataFrame apply Метод преобразования столбца DataFrame в Datetime

apply(func, *args, **kwds)

Метод apply B DataFrame применяет функцию func к каждому столбцу или строке.

Для простоты мы могли бы использовать функцию lambda вместо func.

>>> df['Datetime'] = df['Datetime'].apply(lambda _: datetime.strptime(_,"%m/%d/%Y, %H:%M:%S"))
		   
>>> df
		   
  Alfa Bravo            Datetime
A    1     4 2019-12-07 14:44:35
B    2     5 2019-12-06 14:44:35
C    3     6 2019-12-05 14:44:35

Методы преобразования преобразования столбца DataFrame в сравнение производительности по дате

Давайте используем timeit для сравнения временной производительности обоих методов, представленных в этой статье.

In [1]: %timeit pd.to_datetime(df['Datetime'], format="%m/%d/%Y, %H:%M:%S")
452 µs ± 85.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [2]: %timeit df['Datetime'].apply(lambda _: datetime.strptime(_,"%m/%d/%Y, %H:%M:%S"))
377 µs ± 58.5 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Метод apply даже немного лучше, чем родной метод Pandas to_datetime, при этом около 80% времени исполнения функции to_datetime.

Сопутствующая статья - Pandas DataFrame

  • Как получить заголовки столбцов Pandas DataFrame в виде списка
  • Как удалить колонку Pandas DataFrame
  • Как преобразовать плавающий диск в целое число в Pandas DataFrame
  • Как сортировать панды DataFrame по значениям одной колонки
  • Как получить совокупность Pandas по группам и Сумма
  • Как преобразовать словарь Python в Pandas DataFrame
  • Как добавить строку заголовка к Pandas DataFrame
  • Как преобразовать Pandas Dataframe в Numpy массив
  • Как преобразовать индекс Pandas Dataframe в столбец
  • Как подсчитать NaN-вступления в столбце в Pandas Dataframe
  • Как изменить порядок столбцов DataFrame
  • Сопутствующая статья - Pandas DataFrame Column

  • Как получить заголовки столбцов Pandas DataFrame в виде списка
  • Как удалить колонку Pandas DataFrame
  • Как преобразовать плавающий диск в целое число в Pandas DataFrame
  • Как сортировать панды DataFrame по значениям одной колонки
  • Как получить совокупность Pandas по группам и Сумма
  • Как преобразовать словарь Python в Pandas DataFrame
  • Как добавить строку заголовка к Pandas DataFrame
  • Как преобразовать Pandas Dataframe в Numpy массив
  • Как преобразовать индекс Pandas Dataframe в столбец
  • Как подсчитать NaN-вступления в столбце в Pandas Dataframe
  • Как изменить порядок столбцов DataFrame
  • Как получить заголовки столбцов Pandas DataFrame в виде списка
  • Как удалить колонку Pandas DataFrame
  • Как изменить порядок столбцов DataFrame
  • Сопутствующая статья - Python Datetime

  • Как получить заголовки столбцов Pandas DataFrame в виде списка
  • Как удалить колонку Pandas DataFrame
  • Как преобразовать плавающий диск в целое число в Pandas DataFrame
  • Как сортировать панды DataFrame по значениям одной колонки
  • Как получить совокупность Pandas по группам и Сумма
  • Как преобразовать словарь Python в Pandas DataFrame
  • Как добавить строку заголовка к Pandas DataFrame
  • Как преобразовать Pandas Dataframe в Numpy массив
  • Как преобразовать индекс Pandas Dataframe в столбец
  • Как подсчитать NaN-вступления в столбце в Pandas Dataframe
  • Как изменить порядок столбцов DataFrame
  • Как получить заголовки столбцов Pandas DataFrame в виде списка
  • Как удалить колонку Pandas DataFrame
  • Как изменить порядок столбцов DataFrame
  • comments powered by Disqus