ধরুন আমার কাছে এর মতো দুটি ডেটা ফ্রেম রয়েছে:
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
, যা নয় কি আপনি চান। আরও তথ্যের জন্য নীচে আমার উত্তর দেখুন।