将 Graphlab SFrame 日期列拆分为三列(年月日)
Splitting a Graphlab SFrame Date column into three columns (Year Month Day)
给定 graphlab
SFrame
其中有一列包含日期,例如:
+-------+------------+---------+-----------+
| 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/other python 函数中是否有简单的方法将日期列转换为年|月|日?
+-------+------+----+----+---------+-----------+
| 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
中,我可以这样做:Which is the fastest way to extract day, month and year from a given date?
但是将 SFrame 转换为 Panda 以拆分日期并转换回 SFrame 是一件很麻烦的事情。
一种快速而肮脏的方法是
sf['date2'] = sf['Date'].apply(lambda x: x.split('-'))
sf = sf.unpack('date2')
另一种选择是将 Date
列转换为日期时间类型,然后使用 graphlab.SArray.split_datetime
函数。
您也可以使用 split-datetime 方法来完成。它给了你更多的灵活性。
sf.add_columns(sf['Date'].split_datetime(column_name_prefix = ''))
split_datetime
方法本身位于 SArray
(SFrame 的单列)上,它 returns 一个 SFrame,然后您可以将其添加回原始数据(位于基本上是0成本)
给定 graphlab
SFrame
其中有一列包含日期,例如:
+-------+------------+---------+-----------+
| 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/other python 函数中是否有简单的方法将日期列转换为年|月|日?
+-------+------+----+----+---------+-----------+
| 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
中,我可以这样做:Which is the fastest way to extract day, month and year from a given date?
但是将 SFrame 转换为 Panda 以拆分日期并转换回 SFrame 是一件很麻烦的事情。
一种快速而肮脏的方法是
sf['date2'] = sf['Date'].apply(lambda x: x.split('-'))
sf = sf.unpack('date2')
另一种选择是将 Date
列转换为日期时间类型,然后使用 graphlab.SArray.split_datetime
函数。
您也可以使用 split-datetime 方法来完成。它给了你更多的灵活性。
sf.add_columns(sf['Date'].split_datetime(column_name_prefix = ''))
split_datetime
方法本身位于 SArray
(SFrame 的单列)上,它 returns 一个 SFrame,然后您可以将其添加回原始数据(位于基本上是0成本)