python - 如何比较pyspark中的日期时间行对象

标签 python dataframe apache-spark pyspark apache-spark-sql

我有一个数据框(beaconsDF),其中包含标准化日期列:

+--------+--------------------+--------------------+
|isActive|             company|     Normalized_Date|
+--------+--------------------+--------------------+
|    true|[593b0d9f3f21f9dd...|09/25/2018 00:00:...|
|    true|[593b0d9f3f21f9dd...|11/29/2017 00:00:...|
|    true|[593b0d9f3f21f9dd...|04/01/2019 00:00:...|
|    true|[593b0d9f3f21f9dd...|09/25/2018 00:00:...|
|    true|[593b0d9f3f21f9dd...|11/20/2018 00:00:...|
|    true|[593b0d9f3f21f9dd...|09/25/2018 00:00:...|
|    true|[593b0d9f3f21f9dd...|01/04/2019 00:00:...|
|    true|[593b0d9f3f21f9dd...|01/04/2019 00:00:...|
+--------+--------------------+--------------------+

当日期等于这个简单数据帧(calendarDF2)中的标准化日期时,我想过滤它:

+--------------------+
|     Normalized_Date|
+--------------------+
|11/28/2017 00:00:...|
+--------------------+

我认为这几行代码可以工作:

tempRow = calendarDF2.take(1)
beaconsDF = beaconsDF.filter(beaconsDF.Normalized_Date == tempRow)

但是我在这些行中遇到了一个很长的错误:

py4j.protocol.Py4JJavaError: An error occurred while calling o214.equalTo. : java.lang.RuntimeException: Unsupported literal type class java.util.ArrayList [[11/28/2017 00:00:00 AM]]

我认为我的问题在于日期的格式,因为我对不同类型的格式感到非常困惑。我打印了两个数据帧的值来比较它们并得到了这个:

[Row(Normalized_Date=u'11/28/2017 00:00:00 AM')]  
[Row(Normalized_Date=u'04/01/2019 00:00:00 AM')]

看起来应该正确比较它们,对吗?我的问题也可能与我如何比较它们有关。我在某处看到我可能需要使用3个等号?我尝试了这个,但没有成功。我还尝试将 tempRow 设置为文字,但这不起作用。这里有什么想法吗?

编辑:我还想在将来按小于或等于 tempRow 日期进行过滤

最佳答案

使用collect返回一个list,从中提取的元素可用于比较。截至目前,您正在将 list 与标量值进行比较,因此会出现错误。

tempRow = calendarDF2.collect()[0]['Normalized_Date']
beaconsDF = beaconsDF.filter(beaconsDF.Normalized_Date == tempRow)

关于python - 如何比较pyspark中的日期时间行对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57260929/

相关文章:

python - 如果模式中任何位置都有字符,则正则表达式不匹配

python - 如何使用多列的值计数按组汇总 pandas DataFrame?

python - Pyspark Dataframe - 如何根据列数组作为输入连接列

scala - 如何使用scala运行Spark Streaming的Twitter流行标签?

azure - Spark作业最后无法删除其临时文件夹

python - 您将如何继承并覆盖 Django 模型类以创建 listOfStringsField?

python - py2exe - 单文件 exe-tkinter 程序未执行

python - 使用 findall python 从推文中提取@mentions(给出不正确的结果)

python - 使用基准年计算指数

amazon-web-services - AWS Glue - 是否使用爬网程序