2014-09-24 4 views
5

मेरे पास दो टेबल हैं: बिक्री तालिका & उत्पाद तालिका और ये दो तालिकाएं 'भाग संख्या' कॉलम साझा करती हैं। बिक्री तालिका में 'भाग संख्या' कॉलम अद्वितीय नहीं है, लेकिन यह उत्पाद तालिका में अद्वितीय है। (बिक्री तालिका & उत्पाद तालिका का एक स्नैपशॉट के नीचे छवि देखें)एक कुंजी कॉलम/ERROR पर दो डेटाफ्रेम में शामिल हों: 'कॉलम ओवरलैप लेकिन कोई प्रत्यय निर्दिष्ट नहीं है'

enter image description here

enter image description here

मैं बिक्री की मेज पर प्रत्येक 'भाग संख्या' में जोड़ने के लिए बराबर 'वर्णन' कोशिश कर रहा था, और मैं पांडा वेबसाइट मेरी कोड

sales.join(part_table, on='PART NUMBER') 

से examples पीछा किया लेकिन मैं यह त्रुटि आई:

+०१२३५१६४१०
ValueError: columns overlap but no suffix specified: Index([u'PART NUMBER'], dtype='object') 

क्या कोई यह समझ सकता है कि इस त्रुटि का क्या अर्थ है और इसे कैसे हल किया जाए?

बहुत धन्यवाद!

उत्तर

8

मुझे लगता है कि आप एक merge बल्कि एक join से क्या करना चाहते हैं:

sales.merge(part_table) 

यहाँ एक उदाहरण dataframe:

In [11]: dfa = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B']) 

In [12]: dfb = pd.DataFrame([[1, 'a'], [3, 'b'], [3, 'c']], columns=['A', 'C']) 

In [13]: dfa.join(dfb, on=['A']) 
ValueError: columns overlap but no suffix specified: Index([u'A'], dtype='object') 

In [14]: dfa.merge(dfb) 
Out[14]: 
    A B C 
0 1 2 a 
1 3 4 b 
2 3 4 c 

अगर यह intentational है यह डॉक्स से स्पष्ट नहीं है (मैं सोचा कि on कॉलम के रूप में उपयोग किया जाएगा) लेकिन अगर आप प्रत्यय जोड़ते हैं तो अपवाद संदेश के बाद हम देख सकते हैं कि क्या हो रहा है:

In [21]: dfb.join(dfa, on=['A'], lsuffix='_a', rsuffix='_b') 
Out[21]: 
    A_a C A_b B 
0 1 a 3 4 
1 3 b NaN NaN 
2 3 c NaN NaN 

In [22]: dfb.join(dfa, lsuffix='_a', rsuffix='_b') 
Out[22]: 
    A_a C A_b B 
0 1 a 1 2 
1 3 b 3 4 
2 3 c NaN NaN 

यह kwarg पर अनदेखी कर रहा है और अभी-अभी शामिल कर।

+0

धन्यवाद। किसी कारण से मैंने सोचा कि 'मर्ज' के लिए दो डेटाफ्रेम की लंबाई समान है। – Yumi

+1

यह वास्तव में नवजात बच्चों के लिए एक उपयुक्त गिरावट है –

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