2013-07-31 18 views
30

क्या केवल कुछ कॉलम मर्ज करना संभव है? मेरे पास कॉलम एक्स, वाई, जे, और डीएफ 2 के साथ कॉलम एक्स, ए, बी, सी, डी, ई, एफ, आदि के साथ डेटाफ्रेम डीएफ 1 हैपायथन पांडस केवल कुछ कॉलम मर्ज करें

मैं एक्स पर दो डेटाफ्रेम मर्ज करना चाहता हूं, लेकिन मैं केवल कॉलम df2.a, df2.b मर्ज करना चाहते हैं - संपूर्ण डेटाफ्रेम नहीं।

परिणाम x, y, z, a, b के साथ डेटाफ्रेम होगा।

मैं विलय कर सकता हूं तो अवांछित कॉलम हटा सकता हूं, लेकिन ऐसा लगता है कि एक बेहतर तरीका है।

+1

एंडी: पवित्र गाय जो आसान थी ... मुझे ब्रेक की ज़रूरत है, मैं स्पष्ट रूप से इसे बहुत जटिल बना रहा हूं। स्पष्टता के लिए धन्यवाद! – joelotz

उत्तर

32

आप (सिर्फ उन स्तंभों के साथ) उप DataFrame मर्ज कर सकते हैं:

df2[list('xab')] # df2 but only with columns x, a, and b 

df1.merge(df2[list('xab')]) 
+3

हमम, मुझे आश्चर्य है कि ऐसा करने का मूल तरीका होना चाहिए, जैसे ड्रॉपना में सबसेट ... जीथब मुद्दे –

4

आप सभी पंक्तियों के साथ विशिष्ट स्तंभ का चयन करने और फिर उस खींच .loc उपयोग कर सकते हैं। एक उदाहरण नीचे है:

pandas.merge(dataframe1, dataframe2.iloc[:, [0:5]], how='left', on='key') 

इस उदाहरण में, आप dataframe1 और dataframe2 विलय कर रहे हैं। आपने 'कुंजी' पर बाहरी बाएं शामिल होने का चयन किया है। हालांकि, डेटाफ्रेम 2 के लिए आपने .iloc निर्दिष्ट किया है जो आपको एक संख्यात्मक प्रारूप में इच्छित पंक्तियों और स्तंभों को निर्दिष्ट करने की अनुमति देता है। : का उपयोग करके, आप सभी पंक्तियों का चयन करते हैं, लेकिन [0:5] पहले 5 कॉलम का चयन करता है। आप नाम से निर्दिष्ट करने के लिए .loc का उपयोग कर सकते हैं, लेकिन यदि आप लंबे कॉलम नामों से निपट रहे हैं, तो .iloc बेहतर हो सकता है।

4

आप दो कोष्ठक का उपयोग करना चाहते, इसलिए यदि आप कार्रवाई का एक VLOOKUP तरह कर रहे हैं:

df = pd.merge(df,df2[['Key_Column','Target_Column']],on='Key_Column', how='left') 

यह आपको मूल df में सब कुछ दे + जोड़ना है कि एक df2 में इसी स्तंभ जो आप चाहते करने के लिए होगा में शामिल हो।

2

यह चयनित कॉलम को दो तालिकाओं से मर्ज करना है।

table_1 t1_a,t1_b,t1_c..,id,..t1_z कॉलम, और table_2 t2_a,t2_b,t2_c...,id,..t2_z कॉलम, और केवल t1_a, आईडी, t2_a अंतिम तालिका में आवश्यक हैं, तो

mergedCSV = table_1[['t1_a','id']].merge(table_2[['t2_a','id']], on = 'id',how = 'left')

#save resulting output file

mergedCSV.to_csv('output.csv',index = False)

शामिल हैं, तो
+0

एक साथ रखेगा धन्यवाद - यह सब मैं चाहता था। –

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