【发布时间】:2018-02-07 11:37:16
【问题描述】:
我有一个如下所示的数据集: item_nbr |日期 123 | 2016-09-23 123 | 2016-10-23 112 | 2016-08-15 112 | 2016-09-15
我使用 groupByKey 使它看起来像这样: '123',['2016-09-23','2016-10-23'] '112',['2016-08-15','2016-09-15'] 现在我想计算这两个日期之间的差异。我有一个看起来像这样的函数:
def ipi_generate(x):
member_ipi_list = []
master_ans = []
for j in range(1,len(x[1])):
ans = x[1][j]-x[1][j-1]
master_ans.append(ans)
member_ipi_list.append(x[0])
member_ipi_list.append(master_ans)
return [member_ipi_list]
它将日期视为字符串。如何将我的字符串日期转换为 pyspark 中的 int 日期? 谢谢。
【问题讨论】:
-
您尝试过使用日期时间库吗?如
datetime.strptime(x[1][j], '%Y-%m-%d') -
另外,您是否有理由不将这些转换为日期时间对象之前按键分组?我也不知道您的更大目标,所以这可能合适也可能不合适,但窗口函数或聚合函数在这里可能更容易。调查他们。
-
现在在函数中使用了日期时间库。工作得很好,谢谢。 :) 我尝试将字符串转换为日期时间对象,但这不是最终输出的要求,因此在按键分组之前没有这样做。