You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PySpark过滤DataFrame中SaleDate等于当前日期的记录

错误原因

  1. 语法规则错误:Python/PySpark的条件判断中等值比较需要使用双等号==,你代码中使用了赋值运算符=,同时括号未闭合,直接触发语法报错
  2. 类型匹配问题:SaleDate为字符串类型,需要和同格式的字符串比较,或者统一转换为日期类型后再比较

正确实现代码

如果你的SaleDate字符串存储格式为yyyy-MM-dd(和示例日期格式一致),推荐优先用字符串直接比较,无需转换字段类型,性能更高:

from pyspark.sql.functions import col

target_date = "2021-10-16"
filtered_df = df.where(col("SaleDate") == target_date)

如果需要先统一转换为日期类型再比较(比如存在格式不统一需要校验的场景),可以用以下写法,注意第二个格式参数要和你实际的SaleDate字符串格式匹配:

from pyspark.sql.functions import col, to_date, lit

filtered_df = df.where(
    to_date(col("SaleDate"), "yyyy-MM-dd") == to_date(lit("2021-10-16"))
)

如果你需要的是动态取代码运行时的当前日期,而非固定2021年10月16日,可直接调用current_date()函数:

from pyspark.sql.functions import col, to_date, current_date

filtered_df = df.where(
    to_date(col("SaleDate"), "yyyy-MM-dd") == current_date()
)

内容的提问来源于stack exchange,提问作者Patterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:36:01