मान लीजिए कि मेरे पास दो DataFrames हैं जैसे:
left = pd.DataFrame({'key1': ['foo', 'bar'], 'lval': [1, 2]})
right = pd.DataFrame({'key2': ['foo', 'bar'], 'rval': [4, 5]})
मैं उनका विलय करना चाहता हूं, इसलिए मैं कुछ इस तरह की कोशिश करता हूं:
pd.merge(left, right, left_on='key1', right_on='key2')
और मैं खुश हूं
key1 lval key2 rval
0 foo 1 foo 4
1 bar 2 bar 5
लेकिन मैं शामिल होने की विधि का उपयोग करने की कोशिश कर रहा हूं, जो मुझे विश्वास है कि बहुत समान है।
left.join(right, on=['key1', 'key2'])
और मुझे यह मिलता है:
//anaconda/lib/python2.7/site-packages/pandas/tools/merge.pyc in _validate_specification(self)
406 if self.right_index:
407 if not ((len(self.left_on) == self.right.index.nlevels)):
--> 408 raise AssertionError()
409 self.right_on = [None] * n
410 elif self.right_on is not None:
AssertionError:
मैं क्या खो रहा हूँ?
on
विकल्प द्वारा निर्दिष्ट ) के साथ मेल करना चाहता है other
। याद रखें, शामिल होने के लिए अनुक्रमणिका। जबकि मर्ज () एक अधिक सामान्य विधि है।
merge
के स्तंभों मिलती हैleft
के स्तंभों कोright
जो है तुम क्या चाहते है, लेकिनjoin(... on=[...])
के कॉलम में शामिलleft
के सूचकांक चाबियाँ करने के लिएright
है, जो नहीं है तुम क्या चाहते। अधिक जानकारी के लिए नीचे मेरा उत्तर देखें।