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

PySpark DataFrame日期格式转换:yyyy/mm/dd转M/d/yyyy求助

解决PySpark日期格式转换问题

这个需求完全可以实现。你用date_format()返回null的原因是该函数只接受日期/时间戳类型的输入,而你的day_dt列目前是字符串类型,直接调用会转换失败。

正确的处理分两步:

  • 先用to_date()把字符串类型的日期转为PySpark的Date类型,需指定原格式为"yyyy/MM/dd"
  • 再用date_format()将Date类型转成目标格式"M/d/yyyy"

示例代码如下:

from pyspark.sql import functions as F

# 假设你的DataFrame名为df
df = df.withColumn("formatted_day_dt", 
                   F.date_format(F.to_date(F.col("day_dt"), "yyyy/MM/dd"), "M/d/yyyy"))

验证效果:如果原day_dt值是"2022/01/08",转换后formatted_day_dt会得到"1/8/2022",完全匹配需求。

额外注意:如果day_dt列存在不符合"yyyy/MM/dd"格式的脏数据,to_date()会返回null,最终date_format()结果也会是null。这种情况可以先清洗数据,或者用to_date()的第三个参数设置处理规则(比如mode="coerce"将非法值转为null,mode="drop"直接删除对应行)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:05:22