मैं दो डेटाफ्रेम को एक साथ मर्ज करने की कोशिश कर रहा हूं। एक में 1.5M पंक्तियाँ हैं और एक में 15M पंक्तियाँ हैं। मैं मर्ज किए गए डेटाफ्रेम को 15M पंक्तियों में लाने की उम्मीद कर रहा था, लेकिन इसमें वास्तव में 178M पंक्तियाँ हैं !! मुझे लगता है कि मेरा विलय किसी प्रकार का कार्टेशियन उत्पाद कर रहा है, और यह वह नहीं है जो मैं चाहता हूं।

मैंने यही कोशिश की, और 178M पंक्तियाँ प्राप्त कीं।

df_merged = pd.merge(left=df_nat, right=df_stack, how='inner', left_on='eno', right_on='eno')

मैंने नीचे दिए गए कोड की कोशिश की और स्मृति त्रुटि से बाहर हो गया।

df_merged = pd.merge(df_nat, df_stack, how='inner', on='eno')

मुझे लगता है कि इन डेटाफ्रेम में डुप्ली हैं, और इससे अंतिम विलय नौकरी उड़ रही है। मैं यह कैसे कर सकता हूं ताकि मेरे पास 15M पंक्तियों के साथ अंतिम मर्ज किए गए डेटाफ़्रेम हो? अंत में, स्कीमा अलग हैं, और केवल 'एनो' फ़ील्ड समान है।

धन्यवाद।

0
ASH 20 नवम्बर 2020, 00:24

1 उत्तर

सबसे बढ़िया उत्तर

पहले डुप्स को हटाने का प्रयास करें दोनों को मिला दो। यह स्मृति उपयोग को बहुत कम कर देगा:

df_1 = df_1.drop_duplicates(subset=['enodeb'], keep='last')
df_2 = df_2.drop_duplicates(subset=['enodeb'], keep='last')

अगर डेटासेट मेमोरी में फ़िट होने के लिए बहुत छोटे हैं, तो शायद dask या vaex आउट-ऑफ़-कोर प्रोसेसिंग करने के लिए।

1
Sandi 20 नवम्बर 2020, 11:27