Pandas 에서 DataFrame 열을 Datetime 으로 변환하는 방법

Jinku Hu 2023년1월30일
  1. DataFrame 열을 datetime 으로 변환하는 Pandas to_datetime 함수
  2. DataFrame 열을 Datetime 으로 변환하는 DataFrame.apply 메서드
  3. DataFrame 열을 날짜 / 시간 성능 비교로 변환하는 방법
Pandas 에서 DataFrame 열을 Datetime 으로 변환하는 방법

Pandas DataFrame 열을 Python datetime 으로 변환하는 메소드를 소개합니다.

Pandas to_datetime()함수

  • 열의 요소에서 작동하는 DataFrame ‘적용’방법

이 기사에서는 아래에서 동일한 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

DataFrame 열을 datetime 으로 변환하는 Pandas to_datetime 함수

Pandas to_datetime 함수는 주어진 인수를 datetime 으로 변환합니다.

pandas.to_datetime(param, format="")

형식은 날짜 시간 문자열의 패턴을 지정합니다. 파이썬 datetime 모듈의 stftime 또는 strptime 의 형식과 동일합니다.

>>> 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데이터를 그 자리에서 수정하지 않으므로 반환 된 Pandas 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_datetimeformat을 현명하게 부여하지 않고도 작업을 수행 할 수 있지만 변환 속도는 format을 지정할 때보 다 훨씬 느립니다.

to_datetimeinfer_datetime_format 옵션을 True 로 설정하여 format 문자열을 제공하지 않고 datetime 문자열의 형식을 유추 할 수있는 경우 변환을 더 빠른 모드로 전환 할 수 있습니다.

파싱 ​​속도를 5 ~ 6 배 높일 수 있습니다.

DataFrame 열을 Datetime 으로 변환하는 DataFrame.apply 메서드

apply(func, *args, **kwds)

DataFrame 의 apply 메소드는 func 함수를 각 열이나 행에 적용합니다.

단순함을 위해 func 대신 lambda 함수를 사용할 수 있습니다.

>>> 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 메소드보다 약간 우수하며 to_datetime 함수 실행 시간의 약 80 %가 있습니다.

작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - Pandas DataFrame

관련 문장 - Pandas DataFrame Column

관련 문장 - Python DateTime