2016-07-07 7 views
13

पांडस डेटा विश्लेषण में उपयोग मामलों के बहुत व्यापक स्पेक्ट्रम को संबोधित करने में बहुत अच्छा है। एक विशेष कार्य करने का सबसे अच्छा तरीका क्या है यह जानने के लिए प्रलेखन की खोज करना थोड़ा मुश्किल हो सकता है।पांडा में मर्ज() और concat() के बीच अंतर

मैं वर्तमान में pd.DataFrame.merge() और pd.concat() के बीच आवश्यक अंतर को समझने की कोशिश कर रहा हूं। अब तक, मैं यह स्पष्ट कर सकता हूं:

.merge() केवल कॉलम (प्लस पंक्तियों सूचकांक) का उपयोग कर सकते हैं और यह डेटाबेस-शैली संचालन के लिए अर्थात् उपयुक्त है। .concat() केवल इंडेक्स का उपयोग करके धुरी के साथ प्रयोग किया जा सकता है, और एक पदानुक्रमित सूचकांक जोड़ने का विकल्प देता है।

संयोग से, यह निम्नलिखित अनावश्यकता की अनुमति देता है: दोनों पंक्तियों के सूचकांक का उपयोग करके दो डेटाफ्रेम जोड़ सकते हैं।

और pd.DataFrame.join() के लिए, ऐसा लगता है कि यह केवल .merge() के उपयोग मामलों के सबसेट के लिए एक शॉर्टेंड प्रदान करता है।

क्या कोई इस बात पर टिप्पणी कर सकता है कि इस समय मेरी समझ कितनी पूर्ण और सटीक है?

धन्यवाद।

+0

इसके अलावा, संबंधित: http://stackoverflow.com/a/37891437/1972495 एक चर्चा के आसपास '' '' .merge() '' '' और '' '' .join() '' ''। – WindChimes

उत्तर

13

एक बहुत ही उच्च स्तर अंतर यह है कि merge() (, अनुक्रमित भी इस्तेमाल किया जा सकता left_index=True और/या right_index=True का उपयोग करें) आम कॉलम के मूल्यों के आधार पर दो (या अधिक) dataframes गठबंधन करने के लिए प्रयोग किया जाता है, और concat() लिए किया जाता है axis विकल्प 0 या 1 पर सेट किया गया है या नहीं, इस पर निर्भर करता है कि एक (या अधिक) डेटा फ्रेम एक दूसरे के नीचे (या किनारे पर स्थित है)।

join() का उपयोग सूचकांक के आधार पर 2 डेटाफ्रेम मर्ज करने के लिए किया जाता है; का उपयोग left_index=True विकल्प के साथ करने के बजाय हम join() का उपयोग कर सकते हैं।

उदाहरण के लिए:

df1 = pd.DataFrame({'Key': ['b', 'b', 'a', 'c', 'a', 'a', 'b'], 'data1': range(7)}) 

df1: 
    Key data1 
0 b 0 
1 b 1 
2 a 2 
3 c 3 
4 a 4 
5 a 5 
6 b 6 

df2 = pd.DataFrame({'Key': ['a', 'b', 'd'], 'data2': range(3)}) 

df2: 
    Key data2 
0 a 0 
1 b 1 
2 d 2 

#Merge 
#The 2 dataframes are merged on the basis on values in column "Key" as it is a common column in 2 dataframes 

pd.merge(df1, df2) 

    Key data data2 
0 b 0 1 
1 b 1 1 
2 b 6 1 
3 a 2 0 
4 a 4 0 
5 a 5 0 

#Concat 
# df2 dataframe is appended at the bottom of df1 

pd.concat([df1, df2]) 

Key data1 data2 
0 b 0 NaN 
1 b 1 NaN 
2 a 2 NaN 
3 c 3 NaN 
4 a 4 NaN 
5 a 5 NaN 
6 b 6 NaN 
0 a Nan 0 
1 b Nan 1 
2 d Nan 2 
संबंधित मुद्दे