8
私はPySpark 1.58.0を使用しています。 私はdatetime値の列の行に異常な文字列形式を持っています。それは次のようになります。PySparkデータフレームが異常な文字列形式をタイムスタンプに変換する
Row[(daytetime='2016_08_21 11_31_08')]
タイムスタンプには、この異例のyyyy_mm_dd hh_mm_dd
形式を変換する方法はありますか? 結局
df = df.withColumn("date_time",df.daytetime.astype('Timestamp'))
の線に沿って来ることができる何かが私はregexp_replace
のようなスパークSQL関数が動作することができると思っていましたが、もちろん、私は中:
と日付の半分 と_
に-
と _
を交換する必要があります時間部分。 substring
を使用して2で列を分割し、時間の終わりから数えてカウントできると思っていました。次に、 'regexp_replace'を別々に行い、次に連結します。しかし、これは多くの操作に見えますか?簡単な方法がありますか?
だから私は実際には正しい結果を得ていませんよ。 ................................ df1 = df1.withColumn( "dayte_time"、unix_timestamp( "daytetime"、 "yyyy_MM_dd hh_mm_ss")。 df1 = df1.withColumn( "date_time"、df1.dayte_time.astype( "String")) ---------- -------------------------------------------------- -------------------- [行(daytetime = '2016_08_22 23_18_51'、idnbr = 223338299392、dayte_time = datetime.datetime(1970、1、18、0、51 、47、931000)、date_time = '1970-01-18 00:51:47.931') – PR102012
申し訳ありませんが、私は1.5がバグだったことを忘れています。 .cast( "timestamp") ' – zero323
はい、完璧です。 '.cast( "double")は先に働いた。 – PR102012