팬더 열을 DateTime으로 변환


241

팬더 DataFrame에 문자열 형식으로 가져온 필드가 하나 있습니다. 날짜 / 시간 변수 여야합니다. 날짜 시간 열로 변환 한 다음 날짜를 기준으로 필터링하는 방법은 무엇입니까?

예:

  • 데이터 프레임 이름 : raw_data
  • 열 이름 : Mycol
  • 열의 값 형식 : '05SEP2014 : 00 : 00 : 00.000'

답변:


430

데이터와 일치 to_datetime하는 형식 을 지정 하여 함수를 사용하십시오 .

raw_data['Mycol'] =  pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f')

70
참고 : format인수는 필요하지 않습니다. to_datetime똑똑하다. 데이터를 일치시키지 않고 시도하십시오.
samthebrand

6
SettingWithCopyWarning@ darth-behfans를 사용 하지 않으 려면 stackoverflow.com/a/42773096/4487805
Álvaro Loza

3
데이트 만하지 않고 시간 만 원하는 경우 어떻게합니까?
FaCoffee

5
별로 똑똑하지 않습니다. 열의 일부가 명백히 dayfirst = True 형식 인 경우에도 동일한 열의 다른 열에 대해서는 기본적으로 dayfirst = False로 설정됩니다. 따라서 명시 적 형식 지정 또는 적어도 dayfirst 매개 변수를 사용하는 것이 더 안전합니다.
CPBL

10
형식 문자열을 생략하면 많은 레코드로 인해이 작업이 느려질 수 있습니다. 이 답변 은 이유를 설명합니다. 외모가 좋아하는 infer_datetime_format=True당신은 형식 문자열을 포함하지 않는 경우도 (팬더 문서에 따라) ~ 5-10x에 속도를 구문 분석을 증가시킬 수있다.
atwalsh

52

DataFrame 메서드 .apply()를 사용하여 Mycol 의 값을 조작 할 수 있습니다 .

>>> df = pd.DataFrame(['05SEP2014:00:00:00.000'],columns=['Mycol'])
>>> df
                    Mycol
0  05SEP2014:00:00:00.000
>>> import datetime as dt
>>> df['Mycol'] = df['Mycol'].apply(lambda x: 
                                    dt.datetime.strptime(x,'%d%b%Y:%H:%M:%S.%f'))
>>> df
       Mycol
0 2014-09-05

1
감사! 더 광범위하게 적용 할 수 있지만 다른 대답이 더 직접적이기 때문에 이것은 좋습니다. 나는 내가 더 좋아하는 것을 결정하는 데 어려움을 겪었다 :)
Chris

2
나는 같은이 날짜 시간 객체를 생성하기 때문에 더 나은하는 pandas.tslib.Timestamp 객체 반대로이 대답
wesanyer

25

변환 할 컬럼이 둘 이상인 경우 다음을 수행 할 수 있습니다.

df[["col1", "col2", "col3"]] = df[["col1", "col2", "col3"]].apply(pd.to_datetime)

15
raw_data['Mycol'] =  pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f')

작동하지만 Python의 경고가 발생합니다 .DataFrame의 슬라이스 사본에 A 값을 설정하려고합니다. .loc[row_indexer,col_indexer] = value대신 사용해보십시오

나는 이것이 체인 체인 인덱싱 때문이라고 생각합니다.


2
몇 가지 시도를했지만 여전히 작동합니다 : raw_data.loc [:, 'Mycol'] = pd.to_datetime (raw_data [ 'Mycol'], format = '% d % b % Y : % H : % M : % S . % f ')
pinegulf

9

pandas to_datetime함수를 사용하여 열을 DateTime으로 구문 분석하십시오. 또한를 사용 infer_datetime_format=True하면 형식을 자동으로 감지하고 언급 된 열을 DateTime으로 변환합니다.

import pandas as pd
raw_data['Mycol'] =  pd.to_datetime(raw_data['Mycol'], infer_datetime_format=True)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.