2014-11-05 13 views
60

문자열 형식으로 가져온 pandas DataFrame에 하나의 필드가 있습니다. datetime 변수 여야합니다. 날짜/시간 열로 변환 한 다음 날짜를 기준으로 필터링하는 방법Pandas Column을 DateTime으로 변환

예 :

  • DataFrame 이름 : raw_data
  • 열 이름 : Mycol 열에서
  • 값 형식 : '05SEP2014 : 00 : 00 : 00.000'

답변

134

to_datetime f 귀하의 데이터와 일치하도록 format을 지정하십시오.

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

참고 : 'format' 인수는 필요하지 않습니다. 'to_datetime'은 영리합니다. 데이터와 일치시키지 않고 시도하십시오. – samthebrand

+0

'SettingWithCopyWarning'을 피하려면 @ darth-behfans를 사용하십시오. https://stackoverflow.com/a/42773096/4487805 –

+0

시간 만 있으면 날짜가 필요 없다면 어떨까요? – FaCoffee

23

당신은 Mycol의 값에서 작동하는 DataFrame 방법 .apply()를 사용할 수 있습니다

>>> 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 
+0

고마워요! 이것은 광범위하게 적용 가능하지만 다른 대답은보다 직접적 이었기 때문에 좋았습니다. 나는 내가 맘에 드는 것을 결정하기가 힘들었다. :) – Chris

+0

pandas.tslib.Timestamp 객체와 달리 datetime 객체를 생성하기 때문에 나는이 대답을 더 좋아한다. – wesanyer

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

작품을, 그러나 그것은 값은 노력의 파이썬 경고 결과가 설정되는 DataFrame에서 슬라이스 복사본에. 대신 .loc[row_indexer,col_indexer] = value을 사용해보세요

나는 이것이 연쇄 색인에 의한 것 같아요.