当前位置: 首页 > news >正文

pyspark笔记 Timestamp 类型的比较

最近写pyspark遇到的一个小问题。

假设我们有一个pyspark DataFrame叫做dart

首先将dart里面'timestamp'这一列转化成Timestamp类型


dart=dart.withColumn('timestamp',col('timestamp').cast(TimestampType()))

查看timestamp的前5个元素

dart.select('timestamp').show(5,truncate=False)
'''
+-----------------------+
|timestamp              |
+-----------------------+
|2023-03-31 17:01:41.633|
|2023-03-31 18:03:44.432|
|2023-03-31 17:45:54.505|
|2023-03-31 17:21:30.438|
|2023-03-31 17:07:57.658|
+-----------------------+
only showing top 5 rows
'''

 

我们现在希望找到2023年4/1日及之后的所有行,于是我们有如下几种实现方式

d1 = dart.filter(dart['timestamp'] >= '2023-04-01 00:00:00')
d2 = dart.filter(dart['timestamp'] >= '2023-04-01 0:0:0')
d3 = dart.filter(dart['timestamp'] >= '2023-04-01 00:00:00.000')from datetime import datetime
d4 = dart.filter(dart['timestamp'] >= datetime(2023,4,1,0,0,0))d1.count()
#9720617
d2.count()
#5342819
d3.count()
#9720617
d4.count()
#9720617

为什么d2不一样呢?因为所虽然此时timestamp列已经是Timestamp类型了,但由于d1,d2,d3比较的是一个字符串,所以filter比较的时候,又把对应的timestamp转化回string了

s='2023-04-01 09:30:31.154'
c1='2023-04-01 0:0:0'
c2='2023-04-01 00:00:00'
s>c1,s>c2
#(False, True)

比如这个例子,s虽然也是4/1及之后的时间,但是他比c1小,也就是说不会被d2捕获

http://www.lryc.cn/news/107551.html

相关文章:

  • SpringBoot 集成 Redis
  • 黑客学习笔记(网络安全)
  • [openCV]基于拟合中线的智能车巡线方案V1
  • MyBatis-Plus 和达梦数据库实现高效数据持久化
  • 已注销【888】
  • Ceph错误汇总
  • DataTable过滤某些数据
  • JAVASE---继承和多态
  • Centos7升级gcc、g++版本(转载)
  • 第一章:继承
  • git面试题
  • Github Copilot在JetBrains软件中登录Github失败的解决方案
  • 使用 github 同步谷歌浏览器书签
  • Eclipse进行debug
  • 13-5_Qt 5.9 C++开发指南_基于信号量的线程同步_Semaphore
  • golang使用泛型实现mapreduce操作
  • 2023华数杯数学建模C题思路分析 - 母亲身心健康对婴儿成长的影响
  • 【汇总】解决Ajax请求后端接口,返回ModelAndView页面不跳转
  • 网络安全进阶学习第九课——SQL注入介绍
  • 一个计算机专业的学生数据结构这门课学到什么程度才能算学的还不错?
  • [语义分割] ASPP不同版本对比(DeepLab、DeepLab v1、DeepLab v2、DeepLab v3、DeepLab v3+、LR-ASPP)
  • anaconda创建虚拟环境在D盘
  • Java设计模式之工厂设计模式
  • uniapp使用阿里图标
  • 20230803激活手机realme GT Neo3
  • Spring Cloud Feign+Ribbon的超时机制
  • 使用docker 搭建nginx + tomcat 集群
  • 从Spring的角度看Memcached和Redis及操作
  • 【C语言学习】C语言的基础数据类型
  • 使用AIGC工具提升安全工作效率