2015-11-18 14 views
5

にGraphlab SFrame日付欄graphlab日付を持つ列、たとえばありますSFrame分割を考えると、3つのカラム(年月日)

+-------+------------+---------+-----------+ 
| 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 /その他のpython関数の簡単な方法にはあります日付列を年|月|日に変換しますか? pandas

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

、私はこれを行うことができます:Which is the fastest way to extract day, month and year from a given date?

をしかし、日付を分割しSFrameに戻って変換するために、パンダにSFrameを変換することは非常に面倒です。これを行うには

答えて

4

split-datetimeメソッドを使用することもできます。それはあなたに少し柔軟性を与えます。

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

split_datetime方法自体は、SArray(SFrameの単一の列)にあり、それはあなたが(基本的に0コストで)元のデータに戻す追加できるSFrameを返し

2

迅速かつ汚い方法は、別のオプションは、graphlab.SArray.split_datetime機能を使用し、その後、日時型にDate列に変換することです

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

です。

関連する問題