2015-11-18 22 views
5

içine Graphlab Sçerçeve Tarih sütunu bir graphlab tarihleri ​​ile bir sütun, örneğin var SFrame:Bölme Verilen üç sütun (Yıl Ay Gün)

+-------+------------+---------+-----------+ 
| Store | Date | Sales | Customers | 
+-------+------------+---------+-----------+ 
| 1 | 2015-07-31 | 5263.0 | 555.0 | 
| 2 | 2015-07-31 | 6064.0 | 625.0 | 
| 3 | 2015-07-31 | 8314.0 | 821.0 | 
| 4 | 2015-07-31 | 13995.0 | 1498.0 | 
| 3 | 2015-07-20 | 4822.0 | 559.0 | 
| 2 | 2015-07-10 | 5651.0 | 589.0 | 
| 4 | 2015-07-11 | 15344.0 | 1414.0 | 
| 5 | 2015-07-23 | 8492.0 | 833.0 | 
| 2 | 2015-07-19 | 8565.0 | 687.0 | 
| 10 | 2015-07-09 | 7185.0 | 681.0 | 
+-------+------------+---------+-----------+ 
[986159 rows x 4 columns] 

graphlab/diğer piton fonksiyonunda kolay bir yolu var mı Tarih sütununu Yıl | Ay | Güne dönüştürün Which is the fastest way to extract day, month and year from a given date?

Ama tarih bölmek ve oldukça zahmetli bir iştir geri Sçerçeve dönüştürmek Panda içine Sçerçeve dönüştürmek için:

+-------+------+----+----+---------+-----------+ 
| Store | YYYY | MM | DD | Sales | Customers | 
+-------+------+----+----+---------+-----------+ 
| 1 | 2015 | 07 | 31 | 5263.0 | 555.0 | 
| 2 | 2015 | 07 | 31 | 6064.0 | 625.0 | 
| 3 | 2015 | 07 | 31 | 8314.0 | 821.0 | 
+-------+------------+---------+-----------+ 
[986159 rows x 4 columns] 

pandas, ben bunu yapabilirsiniz.

cevap

4

Ayrıca, split-datetime yöntemiyle de yapabilirsiniz. Size biraz daha esneklik sağlar.

sf.add_columns(sf['Date'].split_datetime(column_name_prefix = '')) 

split_datetime yöntem kendisini SArray (Sçerçeve tek bir kolon) üzerinde ve

(temelde 0 maliyetle), daha sonra orijinal verilerine eklemek için bir Sçerçeve döndürür
2

Bunu yapmak için hızlı ve kirli yolu

sf['date2'] = sf['Date'].apply(lambda x: x.split('-')) 
sf = sf.unpack('date2') 

Başka bir seçenek daha sonra, bir datetime türüne Date sütunu dönüştürmek graphlab.SArray.split_datetime fonksiyonunu kullanmak olacaktır olduğunu.

İlgili konular