python pandas datetime 변환 작업을 numpy로 더 빠르게 하는 방법

조회수 731회

df["click"]의 데이터는 아래와 같이 문자열로 yyyymmddHHMMSS 형태입니다.

 ["20211122000000", "20211122000000", "20211122000000", "20211122000000" ...]

datetime 값으로 변환하기 위해서 아래 코드를 사용중입니다.

df["click"] = df["click"].apply(pd.to_datetime, errors="coerce")

그런데 DataFrame의 행수가 100만 줄이 넘어가니까 너무 느리더라구요. 혹시 numpy를 활용해서 해당 문자열 데이터를 datetime(yyyy-mm-dd HH:MM:SS)으로 변환할 수 있을까요?

혹은 numpy가 아니더라도 제가 사용중인 소스보다 더 빠른 방법이 뭐가 있을까요? DataFrame은 PySpark, Koalas, Dask 를 쓸 수 없는 환경이라서 Pandas입니다.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기
    • pd.to_datetime는 시리즈를 인자로 받을 수 있어요.

      df["click_dt"] = pd.to_datetime(df["click"], error="coerce")
      
    • 시간문자열의 포맷이 일정하다면, format 인자를 고정해 주면, 어떤 포맷인지 pd.to_datetime 이 고민하지 않을테니, 더 빨라질 것 같아요. 질문하신 포맷이라면 아마 아래 코드처럼.

      df["click_dt"] = pd.to_datetime(df["click"], format="%Y%m%d%H%M%S", error="coerce")
      
    • 감사합니다 데이터가 많으니까 포맷팅만으로도 성능 향상이 눈에 보이네요! 김재민 2021.11.25 14:19
    • @김재민 : 이전 답변에서 format 문자열을 잘못 카피했었네요. 일부만 잘라서 테스트해서 format 맞는지 확인하고, 시간 밴치마킹도 하면서 사용하세요. nowp 2021.11.25 14:45

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)