在 pyspark.pandas 中添加/减去日期时间

Posted

技术标签:

【中文标题】在 pyspark.pandas 中添加/减去日期时间【英文标题】:Add/Substract datetime in pyspark.pandas 【发布时间】:2021-12-03 02:31:28 【问题描述】:

我在使用 pyspark.pandas 计算日期时出错。 有没有办法用 pyspark.padnas 计算日期?

import pyspark.pandas
from datetime import timedelta

df = pd.DataFrame('year': [2015, 2016],
                   'month': [2, 3],
                   'day': [4, 5])
df = pd.to_datetime(df)
df + timedelta(days=3)
# this yield same error
df.add(timedelta(days=3))

这会产生这个错误TypeError: Addition can not be applied to datetimes.

下面的作品

df = df.to_pandas()
df + timedelta(days=3)

【问题讨论】:

【参考方案1】:

根据火花文档:

pandas 用户可以通过调用 DataFrame.to_pandas() 访问完整的 pandas API。 pandas-on-Spark DataFrame 和 pandas DataFrame 类似。但是,前者是分布式的,而后者是在单机中的。相互转换时,数据在多台机器和单个客户端机器之间传输。

所以先将 spark 数据帧转换为 pandas 数据帧:

import pyspark.pandas
from datetime import timedelta

df = pd.DataFrame('year': [2015, 2016],
                   'month': [2, 3],
                   'day': [4, 5])
df = df.to_pandas() # here 
df = df.to_datetime(df)
df + timedelta(days=3)
# this yield same error
df.add(timedelta(days=3))

【讨论】:

以上是关于在 pyspark.pandas 中添加/减去日期时间的主要内容,如果未能解决你的问题,请参考以下文章

如何将偏移值添加/减去日期时间并在 SQL 中返回新的日期时间值?

从日期中添加或减去天数的算法?

从日期中添加或减去天数时如何避免周末或节假日[重复]

Javascript:减去日期有效,添加日期无效

从日期时间减去 1 年

如何将工作日中的整数列添加/减去日期时间列?