2016-07-31 18 views
5

प्रश्न: डुप्लिकेट छोड़ते समय पांडा में आप निर्दिष्ट कर सकते हैं कि कौन से कॉलम रखना है। स्पार्क डेटाफ्रेम में बराबर है?स्पार्क डेटाफ्रेम ड्रॉप डुप्लीकेट्स और पहले

पांडा:

df.sort_values('actual_datetime', ascending=False).drop_duplicates(subset=['scheduled_datetime', 'flt_flightnumber'], keep='first') 

स्पार्क dataframe (मैं स्पार्क 1.6.0 का उपयोग करें) रखें विकल्प

df.orderBy(['actual_datetime']).dropDuplicates(subset=['scheduled_datetime', 'flt_flightnumber']) 

'scheduled_datetime' और 'flt_flightnumber' कल्पना कीजिए नहीं है कॉलम 6, 17 कर रहे हैं । इन स्तंभों के मूल्यों पर आधारित कुंजी बना कर हम भी

def get_key(x): 
    return "{0}{1}".format(x[6],x[17]) 

df= df.map(lambda x: (get_key(x),x)).reduceByKey(lambda x,y: (x)) 

deduplicate सकते हैं, लेकिन कैसे पहली पंक्ति रखने के लिए और अन्य डुप्लिकेट से छुटकारा पाने के निर्दिष्ट करने के लिए? आखिरी पंक्ति के बारे में क्या?

+4

जब आप 'चलाने dropDuplicates' आप प्रति कॉलम संयोजन निर्दिष्ट और ड्यूप्स के बाकी से छुटकारा पाने के पहली पंक्ति रख रहे हैं रहता है। क्या आप वाकई अपना कोड पहले से ही नहीं कर रहे हैं जो आप चाहते हैं? –

+0

मैंने परीक्षण किया और यह वास्तव में मामला लगता है। –

+0

लेकिन फिर अगर मैं आखिरी पंक्ति रखना चाहता हूं तो क्या करना है? मैं डुप्लिकेट मानों के लिए केवल एक कॉलम पर देख रहा हूं – hipoglucido

उत्तर

0

उपयोग dropDuplicates विधि डिफ़ॉल्ट रूप से यह पहली घटना

संबंधित मुद्दे