किसी स्थिर मान द्वारा pyspark डेटाफ़्रेम में सभी संख्यात्मक मान बदलें


12

'Null' एलिमेंट्स और न्यूमेरिक एलिमेंट्स से मिलकर pyspark डेटफ्रेम पर विचार करें। सामान्य तौर पर, संख्यात्मक तत्वों के अलग-अलग मूल्य होते हैं। डेटाफ़्रेम के सभी संख्यात्मक मानों को एक स्थिर संख्यात्मक मान (उदाहरण 1 मान द्वारा) कैसे बदलना संभव है? अग्रिम में धन्यवाद!

उदाहरण के लिए pyspark डेटाफ्रेम: start

c1c2c310.0411.3521null1.23null1.2null

परिणाम होना चाहिए:

c1c2c3111121null13null1null

एसओ में आपका स्वागत है! क्या आप कुछ डेटा और / या कोड उदाहरण पोस्ट कर सकते हैं ताकि हम आपकी बेहतर मदद कर सकें?
स्टीरियो

जवाबों:


8

आपकी समस्या के अनुसार, मुझे लगता है कि लिट का इस्तेमाल करना आसान हो सकता है । इसे इस्तेमाल करे-

from pyspark.sql.functions import lit
new_df = df.withColumn('column_name', lit(1))

आशा है ये मदद करेगा!


8

उपयोग litकरने से कॉलम के सभी मान दिए गए मान में बदल जाएंगे।

यह केवल डेटाफ़्रेम के गैर-शून्य मानों के लिए करने के लिए, आपको प्रत्येक कॉलम के गैर-शून्य मानों को फ़िल्टर करना होगा और अपने मूल्य को बदलना होगा। whenइसे प्राप्त करने में आपकी सहायता कर सकते हैं।

from pyspark.sql.functions import when   

df.withColumn('c1', when(df.c1.isNotNull(), 1))
  .withColumn('c2', when(df.c2.isNotNull(), 1))
  .withColumn('c3', when(df.c3.isNotNull(), 1))

यह परिणाम होगा:

c1c2c3111121null13null1null

इसके अलावा, यदि आप उन शून्य मानों को कुछ अन्य मूल्य के साथ बदलना चाहते हैं, तो आप के otherwiseसाथ संयोजन में उपयोग कर सकते हैं when। मान लें कि आप 0वहां पर थोपना चाहते हैं :

from pyspark.sql.functions import when   

df.withColumn('c1', when(df.c1.isNotNull(), 1).otherwise(0))
  .withColumn('c2', when(df.c2.isNotNull(), 1).otherwise(0))
  .withColumn('c3', when(df.c3.isNotNull(), 1).otherwise(0))

यह परिणाम होगा:

c1c2c3111121013010

2

यदि आपके पास कई कॉलम हैं, तो यह आसान होगा:

from pyspark.sql.functions import when   
cols = df.columns # list of all columns
for col in cols:
    df= df.withColumn(col, when(df[col]>0,1).otherwise(0))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.