날짜 / 시간 (입력 데이터)에 대한 문자열 값이있는 DataFrame 열이 있습니다. 세미 타임 스탬프 형식 (원하는 출력 데이터)으로 변환해야합니다. 비어 있고 비어 있어야하는 행이 있습니다. 설명을 위해 따옴표를 사용합니다. 사용 strptime
중이지만 오류가 발생합니다 (아래 참조).
입력 데이터 (문자열) :
Mar 8 12:00 PM 2020
' '
Mar 8 1:00 PM 2020
Mar 8 6:00 PM 2020
Mar 9 8:00 AM 2020
원하는 출력 데이터 :
3/8/2020 12:00:00
' '
3/8/2020 13:00:00
3/8/2020 18:00:00
3/9/2020 08:00:00
암호:
import datetime as dt
df['date'].apply(lambda x: dt.datetime.strptime(x, '%b %d %H:%M %p %Y'))
오류:
ValueError: time data '' does not match format '%b %d %H:%M %p %Y'
원하는 출력을 얻기 위해이 코드를 어떻게 다시 작성할 수 있습니까?
12H 형식으로 선택한 시간 동안 to_datetime
yoour와 유사한 형식으로 작업 하는 경우 일부 값이 일치하지 않는 경우 누락 된 값 ( ) %I
에도 추가 errors='coerce'
됩니다 NaT
.
df['date'] = pd.to_datetime(df['date'], format='%b %d %I:%M %p %Y', errors='coerce')
print (df)
date
0 2020-03-08 12:00:00
1 NaT
2 2020-03-08 13:00:00
3 2020-03-08 18:00:00
4 2020-03-09 08:00:00
사용자 지정 형식 사용 Series.dt.strftime
을 위한 마지막 Series.replace
:
df['date'] = (pd.to_datetime(df['date'], format='%b %d %I:%M %p %Y', errors='coerce')
.dt.strftime('%m/%d/%y %H:%M:%S')
.replace('NaT', ''))
print (df)
date
0 03/08/20 12:00:00
1
2 03/08/20 13:00:00
3 03/08/20 18:00:00
4 03/09/20 08:00:00
또는 여러 스포 아스를 하나의 공백으로 바꿉니다.
df['date'] = (pd.to_datetime(df['date'].replace('\s+', ' ', regex=True), format='%b %d %I:%M %p %Y', errors='coerce')
.dt.strftime('%m/%d/%y %H:%M:%S')
.replace('NaT', ''))
print (df)
date
0 03/08/20 12:00:00
1
2 03/08/20 13:00:00
3 03/08/20 18:00:00
4 03/09/20 08:00:00
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다