PySpark の文字列列を日付形式に変換するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-25 15:17:15
オリジナル
747 人が閲覧しました

How to Convert PySpark String Columns to Date Format?

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート