pyspark2.3.2:dataframe>shift rows with 1,by a column>在带日期的列上

2024-09-27 00:21:25 发布

您现在位置:Python中文网/ 问答频道 /正文

最佳

现在我正在试验pyspark 2.3.2。
我想根据某个列(groupby)移动一个列。在

输入:

    id  timestamp                logintype  start_sessie    timestamp_prev
0   3   2016-02-09 09:36:57.217     INTERN  True            None
1   3   2016-02-09 09:51:40.899     INTERN  False           None
2   3   2016-02-10 10:11:22.131     INTERN  True            None
3   3   2016-02-10 10:17:16.345     INTERN  False           None
4   4   2017-08-10 10:18:12.412     INTERN  True            None
5   4   2017-08-10 10:21:11.788     INTERN  False           None
6   4   2017-08-11 14:17:33.119     INTERN  True            None
7   4   2017-08-11 14:11:51.173     INTERN  False           None
8   4   2017-08-16 11:43:16.609     INTERN  True            None
9   4   2017-08-16 11:13:35.421     INTERN  False           None

幸运的是,自从pyspark 2.3.x版以来,我们就可以使用熊猫了。 所以我脑子里就有了这段代码

我的代码:

^{pr2}$

预期结果如下:

预期结果:

    id  timestamp                logintype  start_sessie    timestamp_prev
0   3   2016-02-09 09:36:57.217     INTERN  True            None
1   3   2016-02-09 09:51:40.899     INTERN  False           2016-02-09 09:36:57.217
2   3   2016-02-10 10:11:22.131     INTERN  True            2016-02-09 09:51:40.899
3   3   2016-02-10 10:17:16.345     INTERN  False           2016-02-10 10:11:22.131
4   4   2017-08-10 10:18:12.412     INTERN  True            None
5   4   2017-08-10 10:21:11.788     INTERN  False           2017-08-10 10:18:12.412
6   4   2017-08-11 14:17:33.119     INTERN  True            2017-08-10 10:21:11.788
7   4   2017-08-11 14:11:51.173     INTERN  False           2017-08-11 14:17:33.119 
8   4   2017-08-16 11:43:16.609     INTERN  True            2017-08-11 14:11:51.173
9   4   2017-08-16 11:13:35.421     INTERN  False           2017-08-16 11:43:16.609

但不幸的是,我总是收到一个错误。
pyarrow.lib.ArrowInvalid: Error converting from Python objects to Int64: Got Python object of type Timestamp but can only handle these types: integer 我不知道怎么处理。 首先我想,这是因为移位函数产生的NaT。但我不确定(在用一个None值替换NaT之后,我仍然有相同类型的错误)

有人对此有更多的经验吗?(你能解决这种类型的错误吗)

谨致问候

--添加额外的:架构--

StructType(List(StructField(id,IntegerType,true),
                StructField(timestamp,TimestampType,true),
                StructField(logintype,StringType,true),
                StructField(start_sessie,BooleanType,true),
                StructField(timestamp_prev,TimestampType,true)))

Tags: 代码noneidfalsetrue错误starttimestamp

热门问题