2014-11-05 11 views
60

Dize biçiminde içe aktarılan pandalar DataFrame'de bir alanım var. Bir datetime değişkeni olmalıdır. Bunu datetime sütununa nasıl dönüştürebilirim ve sonra tarihe göre filtreleyebilirim.Pandalar Sütunu'nu DateTime'a Dönüştürme

Örnek:

  • DataFrame Adı: raw_data
  • Sütun Adı: Br.Mycol Sütun içinde
  • Değer Biçimi: '05SEP2014: 00: 00: 00.000'

cevap

134

to_datetime f'yi kullanın Verilerinizi eşleştirmek için bir format belirtin.

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

Not: 'format' argümanı gerekli değildir. 'to_datetime' akıllıdır. Devam edin ve verilerinizi eşleştirmeye çalışmadan deneyin. – samthebrand

+0

"SettingWithCopyWarning" öğesini önlemek için @ darth-behfans https://stackoverflow.com/a/42773096/4487805 –

+0

kullanın. Yalnızca zaman ister ve tarih istemezseniz ne olur? – FaCoffee

23

Sen MyCol değerlere çalışmasına DataFrame yöntemini .apply() kullanabilirsiniz:

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

Teşekkürler! Bu güzel çünkü daha geniş çapta uygulanabilir ama diğer cevap daha direkt. Daha iyi sevdiğime karar vermekte zorlandım :) – Chris

+0

Bu cevabı daha iyi seviyorum çünkü bir pandas.tslib.Timestamp nesnesine karşılık bir datetime nesnesi üretiyor – wesanyer

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

eser, ancak Bir değer çalışıyor bir Python uyarı ile sonuçlanan ayarlanması DataFrame'den bir dilim kopyası. Bunun yerine kullanmayı deneyin

Bunun bir zincirleme endekslemesinden kaynaklandığını tahmin ediyorum.