तय तारीखों में Pyspark DataFrame - सेट करने के लिए न्यूनतम मूल्य

0

सवाल

मैं एक डेटा फ्रेम के साथ एक टाइमस्टैम्प क्षेत्र - RECEIPTDATEREQUESTED:टाइमस्टैम्प किसी कारण के लिए, वहाँ रहे हैं तारीखों कर रहे हैं कि कम से कम 1900-01-01. मैं ये नहीं चाहता, क्या मैं क्या करना चाहते हैं, हर एक के लिए है मूल्य के कॉलम में dataframe जहां RECEIPTDATEREQUESTED<'1900-01-01 00:00:00' फिर सेट टाइमस्टैम्प करने के लिए या तो 1900-01-01 या अशक्त. मैंने कोशिश की है कुछ तरीके ऐसा करने के लिए, लेकिन यह लगता है कुछ और अधिक सरल में मौजूद होना चाहिए. मैंने सोचा था कि इस तरह से कुछ काम हो सकता है, लेकिन

import datetime
def testdate(date_value):
    oldest = datetime.datetime.strptime('1900-01-01 00:00:00', '%Y-%m-%d')
    try:
        if (date_value < oldest):
            return oldest
        else:
            return date_value
    except ValueError:
        return oldest
udf_testdate = udf(lambda x:testdate(x),TimestampType())
bdf = olddf.withColumn("RECEIPTDATEREQUESTED",udf_testdate(col("RECEIPTDATEREQUESTED")))
data-cleaning pyspark
2021-11-23 20:05:00
1

सबसे अच्छा जवाब

0

आप उपयोग कर सकते हैं सशर्त मूल्यांकन का उपयोग कर when and otherwise स्थापित करने के लिए RECEIPTDATEREQUESTED करने के लिए या तो null या 1900-01-01 00:00:00 whenerver मूल्य है < '1900-01-01 00:00:00'.


from pyspark.sql import functions as F

data = [("1000-01-01 00:00:00",), 
        ("1899-12-31 23:59:59",),
        ("1900-01-01 00:00:00",), 
        ("1901-01-01 00:00:00",)]

df = spark.createDataFrame(data, ("RECEIPTDATEREQUESTED",))\
          .withColumn("RECEIPTDATEREQUESTED", F.to_timestamp(F.col("RECEIPTDATEREQUESTED")))


# Fill null

df.withColumn("RECEIPTDATEREQUESTED", 
              F.when(F.col("RECEIPTDATEREQUESTED") < "1900-01-01 00:00:00", F.lit(None))
               .otherwise(F.col("RECEIPTDATEREQUESTED")))\
  .show(200, False)

# Fill default value

df.withColumn("RECEIPTDATEREQUESTED", 
              F.when(F.col("RECEIPTDATEREQUESTED") < "1900-01-01 00:00:00", F.lit("1900-01-01 00:00:00").cast("timestamp"))
               .otherwise(F.col("RECEIPTDATEREQUESTED")))\
  .show(200, False)

आउटपुट

भरने null

+--------------------+
|RECEIPTDATEREQUESTED|
+--------------------+
|null                |
|null                |
|1900-01-01 00:00:00 |
|1901-01-01 00:00:00 |
+--------------------+

भरने 1900-01-01 00:00:00

+--------------------+
|RECEIPTDATEREQUESTED|
+--------------------+
|1900-01-01 00:00:00 |
|1900-01-01 00:00:00 |
|1900-01-01 00:00:00 |
|1901-01-01 00:00:00 |
+--------------------+
2021-11-23 20:53:37

हाँ. धन्यवाद । मैं नहीं हूँ यकीन है कि कैसे या क्यों यह काम करता है, तो मैं गूगल यह कुछ अधिक है, लेकिन आपको धन्यवाद.
roguecode

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में