문자열을 날짜 / 시간으로 변환


2180

문자열과 같은 날짜 시간 목록이 많이 있습니다.

Jun 1 2005  1:33PM
Aug 28 1999 12:00AM

데이터베이스에서 적절한 날짜 / 시간 필드로 다시 밀어 넣을 것이므로 실제 날짜 / 시간 개체로 마술로 바꿔야합니다.

이것은 Django의 ORM을 거치므로 SQL을 사용하여 삽입시 변환을 수행 할 수 없습니다.


6
하나의 형식이 모든 단일 날짜 시간 ( '', NaN 없음, 불완전하지 않음, 형식 불일치 없음, 후행 문자, 시간대, 마이크로 초 타임 스탬프 또는 기타 텍스트 없음 '')를 처리하지 않는 한 예외 예외 strptime()당신이 그것을 포장하지 않는 한, 당신에게 견과류를 운전합니다. 를 기반으로 내 대답을 참조하십시오 여기에 또는 웨이즈 응답
SMCI

내가 아는 가장 게으르고 가장 널리 사용되는 방법은 dateparser입니다 ( blog.scrapinghub.com/2015/11/09/… 참조 ). 여러 언어로 된 자연 언어 시간 표현으로도 작동합니다. 그래도 속도가 느릴 수 있습니다.
Armando

여기에 유용한 링크가 있습니다 : stackabuse.com/converting-strings-to-date-in-python
GoingMyWay

답변:


3456

datetime.strptime문자열을 날짜 / 시간으로 구문 분석하는 기본 루틴입니다. 주어진 형식 문자열에 의해 결정된 형식으로 모든 종류의 형식을 처리 할 수 ​​있습니다.

from datetime import datetime

datetime_object = datetime.strptime('Jun 1 2005  1:33PM', '%b %d %Y %I:%M%p')

결과 datetime개체는 표준 시간대가 아닙니다.

연결:

노트:

  • strptime = "문자열 구문 분석 시간"
  • strftime = "문자열 형식 시간"
  • 오늘 큰 소리로 발음하면 6 개월 후에 다시 검색 할 필요가 없습니다.

7
영어 이외의 로캘에서는 '% b', '% p'이 (가) 실패 할 수 있습니다.
jfs

15
당신은 형식 문자열의 일부를 제외 미리 알고있을 것이다 @User,하지만 당신은 원하는 경우 date대신의를 datetime통해가는, datetime잘 핸들을 : datetime.strptime('Jun 1 2005', '%b %d %Y').date() == date(2005, 6, 1)
Izkata

14
문자열이 UTC로 날짜 시간을 나타내는 것을 알고 있다면 datetimePython 3에서이 행을 추가 하여 시간대 인식 객체를 얻을 수 있습니다 .from datetime import timezone; datetime_object = datetime_object.replace(tzinfo=timezone.utc)
Flimm

111
나는 찾고 있었다"%Y-%m-%d %H:%M:%S"
Martin Thoma

4
@AminahNuraini 나는 from datetime import datetime대신에 비슷한 문제를 해결했습니다 import datetime.
Max Strater

831

타사 dateutil 라이브러리를 사용하십시오 .

from dateutil import parser
parser.parse("Aug 28 1999 12:00AM")  # datetime.datetime(1999, 8, 28, 0, 0)

구문 분석해야하는 형식을 포함하여 대부분의 날짜 형식을 처리 할 수 ​​있습니다. strptime대부분 올바른 형식을 추측 할 수있는 것보다 편리 합니다.

가독성이 성능보다 중요한 테스트 작성에 매우 유용합니다.

다음과 같이 설치할 수 있습니다.

pip install python-dateutil

86
많은 양의 데이터에 대해서는 이것이 문제에 접근하는 가장 최적의 방법이 아닐 수도 있습니다. 매번 형식을 추측하는 것은 엄청나게 느릴 수 있습니다.
Paweł Polewicz

14
이것은 좋지만 타사에 가지 않고 내장 된 솔루션을 갖는 것이 좋습니다.
brian buck

1
"32nd jan"을 구문 분석하려고하면 "2032-01-06"이 반환됩니다. 문자열이 유효한 날짜인지 여부를 확인할 수있는 방법이
있습니까?

6
@Reef : 빠르고 더러운 벤치 마크에 따르면 5 배 느립니다. 내가 기대했던 것만 끔찍한 속도는 아닙니다 .
Antony Hatchkins

2
예를 들어 시간에서 시간대 정보를 자동으로 삭제하는 것과 같은 자체 문제가 있습니다. parser.parse ('15 : 55EST ')를 시도하고 parser.parse ('15 .55CST')와 비교해보십시오
F1Rumors

490

시간 모듈 에서 strptime 을 확인하십시오 . strftime 의 반대입니다 .

$ python
>>> import time
>>> my_time = time.strptime('Jun 1 2005  1:33PM', '%b %d %Y %I:%M%p')
time.struct_time(tm_year=2005, tm_mon=6, tm_mday=1,
                 tm_hour=13, tm_min=33, tm_sec=0,
                 tm_wday=2, tm_yday=152, tm_isdst=-1)

timestamp = time.mktime(my_time)
# convert time object to datetime
from datetime import datetime
my_datetime = datetime.fromtimestamp(timestamp)
# convert time object to date
from datetime import date
my_date = date.fromtimestamp(timestamp)

16
내가 이해 한 바에 따르면,이 답변은 날짜 시간 객체가 아닌 시간 객체 만 출력하므로 Patrick의 답변과 비교하여 답변이 묻 힙니다.
Alexander Bird

DateTimeField의 기본 날짜 시간 형식을 설정하는 방법이 있습니까?
kingpin

3
Alexander가 말했듯이 이것은 날짜 시간이 아닌 struct_time을 반환합니다. 물론 날짜 시간으로 변환 할 수는 있지만 결국 datetime 객체를 원한다면 Patrick의 대답이 더 간단합니다.
Leandro Alves

표준 파이썬 라이브러리에는 strtotime과 같은 것이 없지만 dateutil에는 많은 노력 날짜 형식을 인식하는 파서가 있습니다.
Geoff Gerrietts

1
@BenBlank : '% b', '% p'는 영어가 아닌 로캘에서 실패 할 수 있습니다.
jfs

113

정말 깔끔한 표현을 변환 할 수있는 프로젝트를 만들었습니다. timestring을 확인하십시오 .

다음은 몇 가지 예입니다.

pip install timestring
>>> import timestring
>>> timestring.Date('monday, aug 15th 2015 at 8:40 pm')
<timestring.Date 2015-08-15 20:40:00 4491909392>
>>> timestring.Date('monday, aug 15th 2015 at 8:40 pm').date
datetime.datetime(2015, 8, 15, 20, 40)
>>> timestring.Range('next week')
<timestring.Range From 03/10/14 00:00:00 to 03/03/14 00:00:00 4496004880>
>>> (timestring.Range('next week').start.date, timestring.Range('next week').end.date)
(datetime.datetime(2014, 3, 10, 0, 0), datetime.datetime(2014, 3, 14, 0, 0))

2
와. 와. 와. 와. 너무 쉽습니다. 날짜 시간 문자열이 있고 연도를 꺼내고 싶습니다. 다음과 같이 간단합니다 : import timestring timestring.Date('27 Mar 2014 12:32:29 GMT').year이 lib는 그렇게 쉽게 만들었습니다! 감사합니다.
brandonjp

당신의 아주 환영. 이 패키지 개선에 대한 귀하의 의견과 아이디어를 환영합니다. github 문제를 사용하십시오. 감사!
Steve Peak

스티브 안녕하세요, 모듈이 훌륭합니다. 평일 문자열 속성도 있으면 좋을 것입니다. 월요일이나 일요일부터 시작하면 확실하지 않습니다
Anake

1
'2017 년 2 월 5 일'과 '2017 년 2 월 5 일'과 같은 형식은 올바르게 변환되지 않습니다 (일부 서클에서 인기있는 형식이며, 명확성과 가독성을 위해 IMO에서 가장 좋은 날짜 형식 임). 로 저장합니다 2017-02-01. 2017 년 5 월 2 일에도 동일합니다 (그러나 2017 년 2 월 5 일을 올바르게 수행합니다). 마지막 두 가지 중 어느 것도 내 지식에 익숙한 형식은 아니지만 어쨌든 지적 할 것이라고 생각했습니다.
Brōtsyorfuzthrāx

2
경고 : 이 패키지는 지난 5 년 동안 어느 시점에서든 유지되거나 개선되지 않은 것으로 보이며 일상적으로 부정확 한 날짜를 구문 분석합니다. 예를 들어, 인스턴스화하면 Date("20180912")어떻게 든 값이 구문 분석 2018-11-21됩니다. 자신의 책임하에 사용하십시오.
bsplosion

54

이것을 기억하면 날짜 시간 변환에 다시 혼동하지 않아도됩니다.

문자열을 날짜 / 시간 객체 = strptime

다른 형식으로 날짜 / 시간 객체 = strftime

Jun 1 2005 1:33PM

~와 같다

%b %d %Y %I:%M%p

% b 로케일의 약식 이름으로 월 (6 월)

% d 달로 채워진 10 진수 (1)

% Y 십진수로 세기를 가진 해 (2015)

0으로 채워진 10 진수로 표시되는 % I 시간 (12 시간 시계) (01)

0으로 채워진 10 진수로 표시되는 % M 분 (33)

% p 로케일의 AM 또는 PM (PM)

따라서 strptime이 필요 string합니다.

>>> dates = []
>>> dates.append('Jun 1 2005  1:33PM')
>>> dates.append('Aug 28 1999 12:00AM')
>>> from datetime import datetime
>>> for d in dates:
...     date = datetime.strptime(d, '%b %d %Y %I:%M%p')
...     print type(date)
...     print date
... 

산출

<type 'datetime.datetime'>
2005-06-01 13:33:00
<type 'datetime.datetime'>
1999-08-28 00:00:00

날짜 형식이 다른 경우 panda 또는 dateutil.parse를 사용할 수 있습니까?

>>> import dateutil
>>> dates = []
>>> dates.append('12 1 2017')
>>> dates.append('1 1 2017')
>>> dates.append('1 12 2017')
>>> dates.append('June 1 2017 1:30:00AM')
>>> [parser.parse(x) for x in dates]

산출

[datetime.datetime(2017, 12, 1, 0, 0), datetime.datetime(2017, 1, 1, 0, 0), datetime.datetime(2017, 1, 12, 0, 0), datetime.datetime(2017, 6, 1, 1, 30)]

소수점 이하 % s
낙관론

1
%b영어 로캘이없는 컴퓨터에서 영어 날짜를 구문 분석해도 중단되지 않습니까?
bfontaine

48

Python> = 3.7.0에서

변환에 날짜 객체에 YYYY-MM-DD 문자열 , datetime.fromisoformat사용할 수있다.

>>> from datetime import datetime

>>> date_string = "2012-12-12 10:10:10"
>>> print (datetime.fromisoformat(date_string))
>>> 2012-12-12 10:10:10

32

많은 타임 스탬프에는 시간대가 포함되어 있습니다. 코드가 모든 시간대에서 작동하도록하려면 내부적으로 UTC를 사용하고 이물질이 시스템에 들어갈 때마다 시간대를 연결해야합니다.

파이썬 3.2 이상 :

>>> datetime.datetime.strptime(
...     "March 5, 2014, 20:13:50", "%B %d, %Y, %H:%M:%S"
... ).replace(tzinfo=datetime.timezone(datetime.timedelta(hours=-3)))

3
mktime()두 번째 방법 ( datetime.strptime()) 을 알고 있다면 왜 추악하고 때로는 잘못 ( DST 전환 중) 첫 번째 방법을 유지 합니까? 윤초 동안 예외를 피하려면 (두 번째 방법이 실패 함) calendar.timegm대신 다음을 사용할 수 있습니다 .(datetime(1970,1,1)+timedelta(seconds=timegm(time.strptime(..)))).replace(tzinfo=timezone(timedelta(-3)))
jfs

29

다음은 Pandas를 사용하여 문자열 형식의 날짜를 datetime.date 객체로 변환하는 두 가지 솔루션입니다.

import pandas as pd

dates = ['2015-12-25', '2015-12-26']

# 1) Use a list comprehension.
>>> [d.date() for d in pd.to_datetime(dates)]
[datetime.date(2015, 12, 25), datetime.date(2015, 12, 26)]

# 2) Convert the dates to a DatetimeIndex and extract the python dates.
>>> pd.DatetimeIndex(dates).date.tolist()
[datetime.date(2015, 12, 25), datetime.date(2015, 12, 26)]

타이밍

dates = pd.DatetimeIndex(start='2000-1-1', end='2010-1-1', freq='d').date.tolist()

>>> %timeit [d.date() for d in pd.to_datetime(dates)]
# 100 loops, best of 3: 3.11 ms per loop

>>> %timeit pd.DatetimeIndex(dates).date.tolist()
# 100 loops, best of 3: 6.85 ms per loop

다음은 OP의 원래 날짜-시간 예를 변환하는 방법입니다.

datetimes = ['Jun 1 2005  1:33PM', 'Aug 28 1999 12:00AM']

>>> pd.to_datetime(datetimes).to_pydatetime().tolist()
[datetime.datetime(2005, 6, 1, 13, 33), 
 datetime.datetime(1999, 8, 28, 0, 0)]

을 사용하여 문자열에서 Pandas Timestamp로 변환하는 많은 옵션이 to_datetime있으므로 특별한 것이 필요한 경우 문서를 확인하십시오 .

마찬가지로 타임 스탬프에는 액세스 할 수있는 많은 속성과 메서드 가 있습니다.date


26

나는 개인적 parser으로이 질문에 대한 두 번째 답변 인 모듈을 사용하는 솔루션을 좋아합니다 . 작동하기 위해 문자열 리터럴을 구성 할 필요가 없으므로 아름답습니다. 그러나 한 가지 단점은 허용 된 답변보다 90 % 느리다는 것입니다 strptime.

from dateutil import parser
from datetime import datetime
import timeit

def dt():
    dt = parser.parse("Jun 1 2005  1:33PM")
def strptime():
    datetime_object = datetime.strptime('Jun 1 2005  1:33PM', '%b %d %Y %I:%M%p')

print(timeit.timeit(stmt=dt, number=10**5))
print(timeit.timeit(stmt=strptime, number=10**5))
>10.70296801342902
>1.3627995655316933

이 작업 을 백만 번 이상 반복 하지 않는 한 , parser방법이 더 편리하고 대부분의 시간 형식을 자동으로 처리 한다고 생각합니다 .


24

여기에 언급되어 있지 않은 유용한 정보 : 하루에 접미사 추가. 접미사 논리를 분리하여 날짜뿐만 아니라 원하는 숫자로 사용할 수 있습니다.

import time

def num_suffix(n):
    '''
    Returns the suffix for any given int
    '''
    suf = ('th','st', 'nd', 'rd')
    n = abs(n) # wise guy
    tens = int(str(n)[-2:])
    units = n % 10
    if tens > 10 and tens < 20:
        return suf[0] # teens with 'th'
    elif units <= 3:
        return suf[units]
    else:
        return suf[0] # 'th'

def day_suffix(t):
    '''
    Returns the suffix of the given struct_time day
    '''
    return num_suffix(t.tm_mday)

# Examples
print num_suffix(123)
print num_suffix(3431)
print num_suffix(1234)
print ''
print day_suffix(time.strptime("1 Dec 00", "%d %b %y"))
print day_suffix(time.strptime("2 Nov 01", "%d %b %y"))
print day_suffix(time.strptime("3 Oct 02", "%d %b %y"))
print day_suffix(time.strptime("4 Sep 03", "%d %b %y"))
print day_suffix(time.strptime("13 Nov 90", "%d %b %y"))
print day_suffix(time.strptime("14 Oct 10", "%d %b %y"))​​​​​​​

17
In [34]: import datetime

In [35]: _now = datetime.datetime.now()

In [36]: _now
Out[36]: datetime.datetime(2016, 1, 19, 9, 47, 0, 432000)

In [37]: print _now
2016-01-19 09:47:00.432000

In [38]: _parsed = datetime.datetime.strptime(str(_now),"%Y-%m-%d %H:%M:%S.%f")

In [39]: _parsed
Out[39]: datetime.datetime(2016, 1, 19, 9, 47, 0, 432000)

In [40]: assert _now == _parsed

16

Django 시간대 인식 날짜 시간 객체 예.

import datetime
from django.utils.timezone import get_current_timezone
tz = get_current_timezone()

format = '%b %d %Y %I:%M%p'
date_object = datetime.datetime.strptime('Jun 1 2005  1:33PM', format)
date_obj = tz.localize(date_object)

이 변환은 다음과 같은 경우 Django와 Python에 매우 중요합니다 USE_TZ = True.

RuntimeWarning: DateTimeField MyModel.created received a naive datetime (2016-03-04 00:00:00) while time zone support is active.

12

다음과 같은 작은 유틸리티 함수를 작성하십시오.

def date(datestr="", format="%Y-%m-%d"):
    from datetime import datetime
    if not datestr:
        return datetime.today().date()
    return datetime.strptime(datestr, format).date()

이것은 충분히 다재다능합니다.

  • 인수를 전달하지 않으면 오늘 날짜가 반환됩니다.
  • 재정의 할 수있는 날짜 형식이 기본적으로 있습니다.
  • 날짜 시간을 반환하도록 쉽게 수정할 수 있습니다.

2
format파이썬에서 예약어이며 변수 이름으로 사용해서는 안됩니다.
파쇄

12

문자열을 날짜 시간으로 변환하거나 시간대와 함께 사용하면 도움이됩니다.

def convert_string_to_time(date_string, timezone):
    from datetime import datetime
    import pytz
    date_time_obj = datetime.strptime(date_string[:26], '%Y-%m-%d %H:%M:%S.%f')
    date_time_obj_timezone = pytz.timezone(timezone).localize(date_time_obj)

    return date_time_obj_timezone

date = '2018-08-14 13:09:24.543953+00:00'
TIME_ZONE = 'UTC'
date_time_obj_timezone = convert_string_to_time(date, TIME_ZONE)

9

화살표 는 날짜와 시간에 유용한 기능을 많이 제공합니다. 이 코드는 질문에 대한 답변을 제공하며 화살표가 날짜를 쉽게 형식화하고 다른 로케일에 대한 정보를 표시 할 수 있음을 보여줍니다.

>>> import arrow
>>> dateStrings = [ 'Jun 1  2005 1:33PM', 'Aug 28 1999 12:00AM' ]
>>> for dateString in dateStrings:
...     dateString
...     arrow.get(dateString.replace('  ',' '), 'MMM D YYYY H:mmA').datetime
...     arrow.get(dateString.replace('  ',' '), 'MMM D YYYY H:mmA').format('ddd, Do MMM YYYY HH:mm')
...     arrow.get(dateString.replace('  ',' '), 'MMM D YYYY H:mmA').humanize(locale='de')
...
'Jun 1  2005 1:33PM'
datetime.datetime(2005, 6, 1, 13, 33, tzinfo=tzutc())
'Wed, 1st Jun 2005 13:33'
'vor 11 Jahren'
'Aug 28 1999 12:00AM'
datetime.datetime(1999, 8, 28, 0, 0, tzinfo=tzutc())
'Sat, 28th Aug 1999 00:00'
'vor 17 Jahren'

자세한 내용은 http://arrow.readthedocs.io/en/latest/ 를 참조하십시오 .


6

당신은 사용할 수 있습니다 easy_date을 쉽게 그것을 만들 :

import date_converter
converted_date = date_converter.string_to_datetime('Jun 1 2005  1:33PM', '%b %d %Y %I:%M%p')

4

날짜 형식 만 원하는 경우 다음과 같은 개별 필드를 전달하여 수동으로 변환 할 수 있습니다.

>>> import datetime
>>> date = datetime.date(int('2017'),int('12'),int('21'))
>>> date
datetime.date(2017, 12, 21)
>>> type(date)
<type 'datetime.date'>

분할 문자열 값을 전달하여 다음과 같이 날짜 유형으로 변환 할 수 있습니다.

selected_month_rec = '2017-09-01'
date_formate = datetime.date(int(selected_month_rec.split('-')[0]),int(selected_month_rec.split('-')[1]),int(selected_month_rec.split('-')[2]))

날짜 형식으로 결과 값을 얻습니다.


2

당신은 또한 확인할 수 있습니다 dateparser

dateparser 웹 페이지에서 일반적으로 사용되는 거의 모든 문자열 형식으로 현지화 된 날짜를 쉽게 구문 분석 할 수있는 모듈을 제공합니다.

설치:

$ pip install dateparser

이것은 날짜를 구문 분석 할 수있는 가장 쉬운 방법입니다.

가장 간단한 방법은 dateparser.parse모듈의 대부분의 기능을 둘러싼 기능 을 사용하는 것입니다.

샘플 코드 :

import dateparser

t1 = 'Jun 1 2005  1:33PM'
t2 = 'Aug 28 1999 12:00AM'

dt1 = dateparser.parse(t1)
dt2 = dateparser.parse(t2)

print(dt1)
print(dt2)

산출:

2005-06-01 13:33:00
1999-08-28 00:00:00

1

내 답변을 참조하십시오 .

실제 데이터에서 이것은 실제 문제입니다. 여러 개의 불일치, 불완전한, 일관성이없고 다국어 / 지역 날짜 형식은 종종 하나의 데이터 세트에서 자유롭게 혼합됩니다. 생산 코드가 실패하는 것은 좋지 않습니다. 여우처럼 예외적으로 행복하지 마십시오.

우리는 시도해야합니다 ... 여러 날짜 시간 형식 fmt1, fmt2, ..., fmtn을 포착하고 strptime()불일치하는 모든 사람들에 대해 예외를 억제 / 처리해야합니다 ( 특히, 묵시적 인 n-들여 쓰기 시도 사다리가 필요하지 않음) ..catch 절). 에서 내 솔루션

def try_strptime(s, fmts=['%d-%b-%y','%m/%d/%Y']):
    for fmt in fmts:
        try:
            return datetime.strptime(s, fmt)
        except:
            continue

    return None # or reraise the ValueError if no format matched, if you prefer

이 질문은 "다중, 불일치, 불완전, 불일치 및 다국어 / 지역 날짜 형식"등에 대해서는 아무 것도 말하지 않았습니다. 이것은 실제 문제 일 수 있지만 여기서는 관련이 없습니다.
RoG

1
@RoG : 그것은 그들이 아니라고 말하지 않았고, 그들이 "거대한 목록 ... 데이터베이스"라는 것을 암시했다 . 내가 작업했던 대부분의 모든 데이터베이스 / 로그 파일에는 여러 날짜 형식, 시간대 식별자, MM-DD 등이있었습니다. 프로덕션 환경에서는 형식으로 하드 코딩하고 예외가 발생하면 부서지기 쉬운 코드를 작성하는 것이 허용되지 않습니다. 예상 된 형식을 얻지 못합니다 (None 또는 ''반환하는 것이 더 수용 가능합니다). 따라서 여러 형식이 필요합니다. 따라서 이것은 묻는 질문을 해결하고 여러 형식의 오류를 처리하는 가장 Pythonic 방법을 알아내는 데 약간의 시간을 보냈습니다.
smci

"거대한 목록 ... 데이터베이스"는 단순히 다른 형식이 아니라 많은 것을 의미합니다. 입력에 단일 형식이 있다는 것을 알고 있다면 단일 형식을 읽는 코드를 작성하는 것이 전적으로 허용됩니다. 이 경우 올바른 형식이 아닌 것을 전달하면 충돌이 발생합니다.
RoG

@RoG : 잘못된 형식 / 엉망 유니 코드 / 잘린 / 누락 / 데이터, NaN, M / D / Y 대 D / M / Y 형식, YY 대 YYYY 등에서 충돌하는 프로덕션 코드를 작성하는 것은 허용되지 않습니다. 내가 보여준 것처럼 7 라이너 솔루션으로 예외를 피할 수 있습니다. 대부분의 실제 "거대한 데이터베이스"는 이와 같습니다. OP가 명시 적으로 말하지 않았다고해서 이것이 일반적인 상황이 아니라는 것을 의미하지는 않습니다. 나는 당신과 함께 울지 않을 것입니다. 어떤 종류의 데이터 세트를 작업하고 있으며 왜 이러한 가정이 합리적이라고 생각합니까? 지속적으로 개입해야하는 장난감 코드에 대해서만 이야기하지 않는 한.
smci

1
OP에는 절대로 불일치가없는 데이터가 있어야한다고 완전히 확실하게 가정하는 것이 약간 어리석은 것 같습니다. 예, 그런 데이터를 가질 수는 있지만 여기서는 그렇지 않습니다. 나는이 답변이 매우 유용하다고 생각했는데, 이는 매우 유사한 질문에 대한 비슷한 답변을 찾는 사람에게 불일치가 분명한 문제입니다.
Paul Miller

1
emp = pd.read_csv("C:\\py\\programs\\pandas_2\\pandas\\employees.csv")
emp.info()

데이터 프레임에서 "시작 날짜 시간"열과 "마지막 로그인 시간"이 모두 "개체 = 문자열"임을 나타냅니다.

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 8 columns):
First Name           933 non-null object
Gender               855 non-null object
Start Date           1000 non-null object

Last Login Time      1000 non-null object
Salary               1000 non-null int64
Bonus %              1000 non-null float64
Senior Management    933 non-null object
Team                 957 non-null object
dtypes: float64(1), int64(1), object(6)
memory usage: 62.6+ KB

언급 한 parse_dates옵션 을 사용 read_csv하면 문자열 날짜 시간을 팬더 날짜 시간 형식으로 변환 할 수 있습니다.

emp = pd.read_csv("C:\\py\\programs\\pandas_2\\pandas\\employees.csv", parse_dates=["Start Date", "Last Login Time"])
emp.info()


<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1000 entries, 0 to 999
Data columns (total 8 columns):
First Name           933 non-null object
Gender               855 non-null object
Start Date           1000 non-null datetime64[ns]
Last Login Time      1000 non-null datetime64[ns]
Salary               1000 non-null int64
Bonus %              1000 non-null float64
Senior Management    933 non-null object
Team                 957 non-null object
dtypes: datetime64[ns](2), float64(1), int64(1), object(4)
memory usage: 62.6+ KB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.