PySpark 문자열을 날짜 형식으로 변환
MM-dd-yyyy 형식의 날짜를 나타내는 문자열 열이 있는 PySpark DataFrame이 있습니다. to_date 함수를 사용하여 이 열을 날짜 형식으로 변환하려고 하면 null이 반환됩니다. 이 문서에서는 이 문제를 해결하는 방법을 제공합니다.
업데이트된 권장 사항(Spark 2.2 ):
Spark 버전 2.2 이상의 경우 선호되는 접근 방식은 to_date 또는 이제 형식 인수를 지원하는 to_timestamp 함수. 이를 통해 입력 형식을 지정하고 문자열 열을 날짜 또는 타임스탬프로 직접 변환할 수 있습니다.
from pyspark.sql.functions import to_timestamp df = spark.createDataFrame([('1997-02-28 10:30:00',)], ['t']) df.select(to_timestamp(df.t, 'yyyy-MM-dd HH:mm:ss').alias('dt')).collect() # Output: # [Row(dt=datetime.datetime(1997, 2, 28, 10, 30))]
원래 답변(Spark < 2.2):
이전 Spark 버전의 경우 사용자 정의 함수 없이 다음 방법을 사용할 수 있습니다. (UDF):
from pyspark.sql.functions import unix_timestamp, from_unixtime df = spark.createDataFrame( [("11/25/1991",), ("11/24/1991",), ("11/30/1991",)], ['date_str'] ) df2 = df.select( 'date_str', from_unixtime(unix_timestamp('date_str', 'MM/dd/yyy')).alias('date') ) print(df2) # Output: # DataFrame[date_str: string, date: timestamp] df2.show(truncate=False) # Output: # +----------+-------------------+ # |date_str |date | # +----------+-------------------+ # |11/25/1991|1991-11-25 00:00:00| # |11/24/1991|1991-11-24 00:00:00| # |11/30/1991|1991-11-30 00:00:00| # +----------+-------------------+
이 방법에서 unix_timestamp는 문자열 열을 Unix 타임스탬프로 변환하고 from_unixtime은 Unix 타임스탬프를 날짜 열로 변환합니다.
위 내용은 PySpark 문자열 열을 날짜 형식으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!