मैं अपने स्पार्क डेटाफ़्रेम में एक स्तंभ बनाने की कोशिश कर रहा हूँ यदि एक स्तंभ की पंक्ति एक अलग डेटाफ़्रेम में है।

यह मेरा मुख्य स्पार्क डेटाफ़्रेम है (df_main)

+--------+
|main    |
+--------+
|28asA017|
|03G12331|
|1567L044|
|02TGasd8|
|1asd3436|
|A1234567|
|B1234567|
+--------+

यह मेरा संदर्भ है (df_ref), इस संदर्भ में सैकड़ों पंक्तियाँ हैं इसलिए मैं स्पष्ट रूप से उन्हें इस तरह से हार्ड कोड नहीं कर सकता समाधान या यह वाला

+--------+
|mask_vl |
+--------+
|A1234567|
|B1234567|
...
+--------+

आम तौर पर, मैं पांडा के डेटाफ़्रेम में क्या करूँगा:

df_main['is_inref'] = np.where(df_main['main'].isin(df_ref.mask_vl.values), "YES", "NO")

ताकि मुझे यह मिल जाए

+--------+--------+
|main |is_inref|
+--------+--------+
|28asA017|NO      |
|03G12331|NO      |
|1567L044|NO      |
|02TGasd8|NO      |
|1asd3436|NO      |
|A1234567|YES     |
|B1234567|YES     |
+--------+--------+

मैंने निम्नलिखित कोड का प्रयास किया है, लेकिन मुझे चित्र में त्रुटि का अर्थ नहीं मिलता है।

df_main = df_main.withColumn('is_inref', "YES" if F.col('main').isin(df_ref) else "NO")
df_main.show(20, False)

Error of the mentioned code

1
user2552108 12 जुलाई 2021, 11:37

2 जवाब

यदि आप संग्रह से बचना चाहते हैं, तो मैं आपको निम्नलिखित कार्य करने की सलाह देता हूं:

df_ref= df_ref
          .withColumnRenamed("mask_v1", "main")
          .withColumn("isPreset", lit("yes"))
      
 main_df= main_df.join(df_ref, Seq("main"), "left_outer")
          .withColumn("is_inref", when(col("isPresent").isNull,
          lit("NO")).otherwise(lit("YES")))
1
Elisabetta 12 जुलाई 2021, 15:41

मुझे लगता है कि इस प्रश्न का उत्तर पहले ही दिया जा चुका है, आप इसे यहां देख सकते हैं स्पार्क अपरिवर्तित पंक्तियों का पता लगाता है

0
Vikas 12 जुलाई 2021, 08:53