在Sframes中使用.apply()来操作每行的多个列

时间:2016-09-30 17:21:49

标签: python sframe

我有一个带有Date1和Date2列的SFrame。

我正在尝试使用.apply()来查找Date1和Date2之间的日期,但我无法弄清楚如何使用另一个参数。

理想情况类似

frame['new_col'] = frame['Date1'].apply(lambda x: datediff(x,frame('Date2')))

1 个答案:

答案 0 :(得分:0)

您只需从Date2中减去Date1即可直接获取frame['Date1']列中的日期与frame['Date2']中的日期之间的差异。由于某种原因,它返回两个日期之间的秒数(仅使用python' s datetime对象进行测试),您可以使用简单的算术转换为天数

from sframe import SFrame
from datetime import datetime, timedelta

mydict = {'Date1':[datetime.now(), datetime.now()+timedelta(2)], 
          'Date2':[datetime.now()+timedelta(10), datetime.now()+timedelta(17)]}
frame = SFrame(mydict)
frame['new_col'] = (frame['Date2'] - frame['Date1']).apply(lambda x: x//(60*60*24))

输出:

+----------------------------+----------------------------+---------+
|           Date1            |           Date2            | new_col |
+----------------------------+----------------------------+---------+
| 2016-10-02 21:12:14.712556 | 2016-10-12 21:12:14.712574 |   10.0  |
| 2016-10-04 21:12:14.712567 | 2016-10-19 21:12:14.712576 |   15.0  |
+----------------------------+----------------------------+---------+