Dizgiyi datetime değerine dönüştürme


2181

Ben dizeleri gibi böyle tarih-tarih büyük bir listesi var:

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

Bunları bir veritabanındaki uygun datetime alanlarına geri iteceğim, bu yüzden onları gerçek datetime nesnelerine büyümem gerekiyor.

Bu ekleme üzerinde dönüşüm yapmak için SQL kullanamazsınız bu yüzden Django'nın ORM geçiyor.


6
Bir biçimin her bir tarih saatinde işlemediğinden emin değilseniz (hayır '', NaN yok, eksik yok, biçim uyumsuzluğu yok, arka karakter yok, zaman dilimi, mikrosaniye zaman damgası veya başka bir metin ...), strptime()sarmadıkça seni deli eder. Or
Weis'e

Tanıdığım en tembel, en yaygın olarak kullanılan yaklaşım dateparser'dır (check blog.scrapinghub.com/2015/11/09/… ). Kutudan çıktığı gibi birkaç dilde doğal dil zaman ifadeleriyle bile çalışır. Sanırım yavaş olabilir.
Armando

Yanıtlar:


3460

datetime.strptimedizeleri tarihlere ayrıştırmak için ana yordamdır. Verdiğiniz bir biçim dizesi tarafından belirlenen biçim ile her türlü biçimi işleyebilir:

from datetime import datetime

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

Ortaya çıkan datetimenesne saat dilimi naiftir.

Bağlantılar:

Notlar:

  • strptime = "dize ayrıştırma süresi"
  • strftime = "dize biçimi zamanı"
  • Bugün yüksek sesle telaffuz edin ve 6 ay içinde tekrar aramak zorunda kalmayacaksınız.

7
'% b', '% p' ​​İngilizce dışındaki yerel ayarlarda başarısız olabilir.
jfs

15
@Kullanıcı Biçim dizesinin bu bölümünü hariç tutmak için önceden bilmeniz gerekecek, ancak datebunun yerine a istiyorsanız datetime, datetimegüzel datetime.strptime('Jun 1 2005', '%b %d %Y').date() == date(2005, 6, 1)
işliyor

14
Dizenin UTC'de bir tarih datetimefrom datetime import timezone; datetime_object = datetime_object.replace(tzinfo=timezone.utc)
saatini

111
Aradığım"%Y-%m-%d %H:%M:%S"
Martin Thoma

4
@AminahNuraini Benzer bir sorunu from datetime import datetimeadil yapmak yerine hallettim import datetime.
Max Strater

831

Üçüncü taraf dateutil kitaplığını kullanın :

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

Ayrıştırmanız gereken format da dahil olmak üzere çoğu tarih formatını işleyebilir. strptimeÇoğu zaman doğru biçimi tahmin edebileceğinden daha uygundur .

Okunabilirliğin performanstan daha önemli olduğu testler yazmak için çok kullanışlıdır.

Şunlarla yükleyebilirsiniz:

pip install python-dateutil

86
Büyük veri miktarları için bunun soruna yaklaşmanın en uygun yolu olmayabileceğini unutmayın. Biçimi her seferinde tahmin etmek çok yavaş olabilir.
Paweł Polewicz

14
Bu güzel ama üçüncü bir tarafa gitmek yerine yerleşik bir çözüme sahip olmak güzel olurdu.
brian buck

1
"32 Ocak" ayrıştırmak çalıştığımda, bana "2032-01-06" döndürür. Bu yanlış. ipin geçerli bir tarih olup olmadığını kontrol etmenin bir yolu var mı
Kartik Domadiya

6
@Reef: Hızlı ve kirli kıyaslamama göre 5 kat daha yavaş. Beklediğim kadar korkunç yavaş değil .
Antony Hatchkins

2
Kendi sorunları vardır - örneğin, zaman dilimi bilgilerini sessizce zamanlardan bırakarak: parser.parse ('15: 55EST ')' i deneyin ve örnek olarak parser.parse ('15 .55CST ') ile karşılaştırın
F1Rumors

490

Check out strptime içinde zaman modülü. Saldırının tersidir .

$ 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
Anladığım kadarıyla, bu cevap sadece tarih nesneleri değil, zaman nesneleri verir - bu yüzden cevap Patrick'in cevabına kıyasla gömülecektir.
Alexander Bird

DateTimeField öğesinin varsayılan datetime biçimini ayarlamanın bir yolu var mı?
Ocak'ta kingpin

3
Alexander'ın dediği gibi, bu datetime değil, struct_time döndürür. Tabii ki bir datetime dönüştürebilirsiniz, ancak sonunda bir datetime nesnesi istiyorsanız Patrick'in cevabı daha basittir.
Leandro Alves

Standart python kütüphanesinde strtotime gibi bir şey yoktur, ancak dateutil'in en iyi çaba tarihi biçimlerini tanıyan bir ayrıştırıcısı vardır.
Geoff Gerrietts

1
@BenBlank: '% b', '% p' ​​İngilizce dışındaki yerel ayarlarda başarısız olabilir.
jfs

113

Gerçekten düzgün ifadeleri dönüştürebilecek bir projeyi bir araya getirdim. Zamana göz atın .

Aşağıda bazı örnekler verilmiştir:

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
Vay. Vay. Vay. Vay. Bu çok kolay. Bir datetime ipim var ve sadece yılı çıkarmak istiyorum. Bu kadar basit: import timestring timestring.Date('27 Mar 2014 12:32:29 GMT').yearBu lib onu KOLAY yaptı! Teşekkür ederim.
brandonjp

Rica ederim. Bu paketi geliştirme hakkındaki görüş ve düşüncelerinizi çok isterim. Bana bildirin, github sorunlarını kullanın. Teşekkürler!
Steve Peak

Selam steve, modül harika. Hafta içi dize özniteliğine de sahip olmak güzel olurdu. Aksi takdirde Pazartesi veya Pazar gününden başlayıp başlamadığınızdan emin değilim
Anake

1
'5 Şubat 2017' ve '5 Şubat 2017' gibi düzgün bir şekilde dönüştürülmez (bazı çevrelerde popüler olan biçimler ve netlik ve okunabilirlik için en iyi tarih biçimlerinden bazıları IMO). Onları depolar 2017-02-01. 5 Şubat / 2017 için aynıdır (ancak 5 Şubat 2017'yi doğru yapar); bu son ikisi de benim bildiğim kadarıyla gördüğüm formatlar, ama yine de dikkat çekeceğimi düşündüm.
Brōtsyorfuzthrāx

2
UYARI: Bu paket, son 5 yıl boyunca hiçbir noktada muhafaza edilmemiş veya geliştirilmemiştir ve rutin olarak açıkça yanlış tarihleri ​​ayrıştırmaktadır. Örneğin, somutlaştırmak bir Date("20180912")şekilde değerini ayrıştırır 2018-11-21. Kendi sorumluluğunuzdadır kullanın.
bsplosion

54

Bunu hatırlayın ve datetime dönüşümüyle tekrar karıştırmanıza gerek yoktu.

Datetime nesnesine dize = strptime

datetime nesnesini diğer biçimlere = strftime

Jun 1 2005 1:33PM

eşittir

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

% b Ayın yerel ayarının kısaltılmış adı (Haz)

% d Sıfır dolgulu ondalık sayı olarak ayın günü (1)

Ondalık sayı olarak yüzyıl ile% Y Yıl (2015)

Sıfır dolgulu ondalık sayı olarak% I Saat (12 saatlik zaman) (01)

Sıfır dolgulu ondalık sayı olarak% M Dakika (33)

% p Yerel ayarın AM veya PM (PM) eşdeğeri

Böylece yani dönüştürme strptime gerek stringiçin

>>> 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
... 

Çıktı

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

Farklı tarih biçimleriniz varsa panda veya dateutil.parse kullanabilirsiniz.

>>> 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]

Çıktı

[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)]

Ondalık olarak Saniye için% S
iyimser

1
Olmaz %bbir İngiliz yerel ayarı olmayan bir makinede bir İngiliz tarih ayrıştırmak eğer kırmak?
bfontaine

48

Python'da = 3.7.0,

dönüştürme için tarih saat nesneye YYYY-AA-GG dize , datetime.fromisoformatkullanılabilir.

>>> from datetime import datetime

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

32

Birçok zaman damgasının zımni bir zaman dilimi vardır. Kodunuzun her saat diliminde çalışacağından emin olmak için UTC'yi dahili olarak kullanmalı ve yabancı bir nesne sisteme her girdiğinde bir saat dilimi eklemelisiniz.

Python 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()2. yöntemi ( datetime.strptime()) biliyorsanız neden çirkin ve bazen yanlış ( DST geçişleri sırasında) 1. yöntemini tutuyorsunuz ? Bir saniye boyunca istisnadan kaçınmak istiyorsanız (2. yöntem başarısız olur), calendar.timegmbunun yerine şunları kullanabilirsiniz :(datetime(1970,1,1)+timedelta(seconds=timegm(time.strptime(..)))).replace(tzinfo=timezone(timedelta(-3)))
jfs

29

Dizeler olarak biçimlendirilmiş tarihleri ​​datetime.date nesnelerine dönüştürmek için Panda'ları kullanan iki çözüm.

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)]

zamanlamalar

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

İşte OP'nin orijinal tarih-saat örneklerini nasıl dönüştüreceğiniz aşağıda açıklanmıştır:

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)]

Dizelerden Pandas Zaman Damgalarına dönüştürmek için birçok seçenek vardır to_datetime, bu nedenle özel bir şeye ihtiyacınız varsa dokümanları kontrol edin .

Benzer şekilde, Zaman Damgaları , aşağıdakilere ek olarak erişilebilen birçok özellik ve yönteme sahiptir:.date


26

Ben şahsen parserbu soruna ikinci cevap ve güzel, modülü kullanarak çözümü seviyorum , çünkü onu çalıştırmak için herhangi bir dize değişmezleri oluşturmak zorunda değilsiniz. AMA , bir dezavantajı, kabul edilen cevaptan % 90 daha yavaş olmasıdırstrptime .

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

Bunu tekrar tekrar milyonlarca kez yapmadığınız sürece , parseryöntemin daha uygun olduğunu ve çoğu zaman biçimini otomatik olarak ele alacağını düşünüyorum .


24

Burada bahsedilmeyen ve kullanışlı bir şey: güne bir sonek eklemek. Sonek mantığını ayrıştırdım, böylece sadece tarihler için değil, istediğiniz herhangi bir sayı için kullanabilirsiniz.

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 Saat Dilimi farkında datetime nesnesi örneği.

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)

Bu dönüşüm, Django ve Python için aşağıdaki durumlarda çok önemlidir USE_TZ = True:

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

12

Şunun gibi küçük bir yardımcı program işlevi oluşturun:

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

Bu yeterince çok yönlüdür:

  • Herhangi bir argüman iletmezseniz, bugünün tarihi dönecektir.
  • Varsayılan olarak geçersiz kılabileceğiniz bir tarih biçimi vardır.
  • Tarih saatini döndürmek için kolayca değiştirebilirsiniz.

2
formatpython'da ayrılmış bir kelimedir ve değişken adı olarak kullanılmamalıdır.
parçalama

12

Dizeyi datetime ve zaman dilimi ile dönüştürmek için yararlı olur

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

arrow tarihler ve saatler için birçok yararlı işlev sunar. Bu kod biti soruyu cevaplar ve okun tarihleri ​​kolayca biçimlendirebildiğini ve diğer yerel ayarlar için bilgileri görüntüleyebildiğini gösterir.

>>> 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'

Daha fazla bilgi için http://arrow.readthedocs.io/en/latest/ adresine bakın .



4

Yalnızca tarih biçimini istiyorsanız, aşağıdaki gibi ayrı alanlarınızı ileterek manuel olarak dönüştürebilirsiniz:

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

Bölünmüş dize değerlerinizi aşağıdaki gibi tarih türüne dönüştürmek için iletebilirsiniz:

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]))

Ortaya çıkan değeri tarih biçiminde alırsınız.


2

Ayrıca kontrol edebilirsiniz dateparser

dateparser web sayfalarında yaygın olarak bulunan hemen hemen tüm dize biçimlerinde yerelleştirilmiş tarihleri ​​kolayca ayrıştırmak için modüller sağlar.

Yüklemek:

$ pip install dateparser

Bu, bence, tarihleri ​​ayrıştırmanın en kolay yolu.

En basit yol, dateparser.parsemodüldeki işlevselliklerin çoğunu saran işlevi kullanmaktır .

Basit kod:

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)

Çıktı:

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

1

Cevabımı gör .

Gerçek dünya verilerinde bu gerçek bir sorundur: birden çok, eşleşmeyen, eksik, tutarsız ve çok dilli / bölge tarih biçimleri, genellikle bir veri kümesinde serbestçe karıştırılır. Üretim kodunun başarısız olması sorun değil, bir tilki gibi istisna-mutlu gitmek.

Denemeliyiz ... Birden fazla tarih biçimini yakala fmt1, fmt2, ..., fmtn ve strptime()uyuşmayan (ve özellikle, yukky n-derin girintili bir deneme merdivenine ihtiyaç duymayanlar için istisnaları bastır / yönet ..catch cümleleri). Gönderen benim çözüm

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

Soru, "çoklu, uyumsuz, eksik, tutarsız ve çok dilli / bölge tarih biçimleri" vb. Hakkında hiçbir şey söylemedi. Bu gerçek bir sorun olabilir, ancak burada alakalı değildir.
RoG

1
@ Roog: Asla olmadıklarını söylemedi ve "büyük liste ... veritabanı" olduklarını ima etti . Üzerinde çalıştığım her veritabanı / günlük dosyasında (hatta küçük boyutlu), birden çok tarih biçimi, saat dilimi tanımlayıcısı, MM-DD vb. Vardı. beklediği biçimi alamıyor (Hiçbiri veya '' döndürmek daha kabul edilebilir). Bu nedenle çoklu formatlara ihtiyaç vardır. Bu yüzden sorulan soruya değiniyor ve birden fazla formattaki hataları işlemek için en Pythonic yolunu bulmak için biraz zaman harcadım.
smci

"dev liste ... veritabanı" basitçe bunların birçoğu olduğunu, hepsinin farklı biçimler olduğunu değil. Girişte tek bir format olduğunu biliyorsanız, tek bir format okuyan kod yazmak tamamen kabul edilebilir. Bu durumda, doğru biçimde olmayan bir şey iletilirse çökmelidir.
RoG

@RoG: yanlış format / karıştırılmış Unicode / kesilmiş / eksik / veri, NaNs, M / D / Y vs D / M / Y formatı, YY vs YYYY vb. gösterdiğim gibi yedi astarlı bir çözümle istisnalar önlenebilir. Çoğu gerçek dünya "devasa veritabanları" böyledir. OP'nin açıkça bunun tipik bağlam olmadığı anlamına gelmediğini söylememesi. Seninle uğraşmayacağım. Ne tür veri setleri üzerinde çalışıyorsunuz ve bu varsayımların neden makul olduğunu düşünüyorsunuz? Sadece sürekli müdahale gerektiren oyuncak kodundan bahsetmedikçe.
smci

1
OP'nin hiçbir zaman tutarsızlıkları olmayan verilere sahip olması gerektiğini kesin bir şekilde varsaymak biraz aptalca görünüyor. Evet, böyle bir veriye sahip olmak mümkündür, ancak hayır, burada böyle olduğunu varsayamayız. Bu cevabın yararlı olduğunu düşündüm, kesinlikle benim için çok benzer bir soruya benzer cevaplar arayan, tutarsızlıkların kesinlikle bir sorun olduğu.
Paul Miller

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

"Başlangıç ​​Tarihi Saati" Sütunu ve "Son Giriş Saati" ni veri çerçevesinde "nesne = dizeler" olarak gösterir

<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

Bahsedilen parse_datesseçeneği kullanarak read_csvstring datetime'ınızı pandas datetime formatına dönüştürebilirsiniz.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.