如何在 PySpark 中复制 Pandas 的 between_time 函数

Posted

技术标签:

【中文标题】如何在 PySpark 中复制 Pandas 的 between_time 函数【英文标题】:How to replicate the between_time function of Pandas in PySpark 【发布时间】:2020-12-12 03:42:49 【问题描述】:

我想在 PySpark 中复制 Pandas 的 between_time 函数。 是否有可能因为在 Spark 中数据帧是分布式的并且没有基于日期时间的索引?

i = pd.date_range('2018-04-09', periods=4, freq='1D20min')
ts = pd.DataFrame('A': [1, 2, 3, 4], index=i)
ts.between_time('0:45', '0:15')

在 PySpark 中是否有类似的可能?

pandas.between_time - API

【问题讨论】:

【参考方案1】:

如果您在 Spark 数据框中有一个时间戳列,例如 ts,那么对于上述情况,您可以使用

import pyspark.sql.functions as F

df2 = df.filter(F.hour(F.col('ts')).between(0,0) & F.minute(F.col('ts')).between(15,45))

【讨论】:

以上是关于如何在 PySpark 中复制 Pandas 的 between_time 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pyspark 中使用 @pandas_udf 返回多个数据帧?

如何在 pyspark 中使用 pandas UDF 并在 StructType 中返回结果

如何在 pyspark.sql.functions.pandas_udf 和 pyspark.sql.functions.udf 之间进行选择?

如何在 jupyter 中像 pandas Dataframe 一样打印 Pyspark Dataframe

如何在 PySpark 或 Pandas 中将一列的中间行大写

PySpark:如何删除 DataFrame 中的非数字列?