def join(self, other, how='<STR_LIT:left>', lsuffix='<STR_LIT>', rsuffix='<STR_LIT>'):
from pandas.core.reshape.concat import concat<EOL>if isinstance(other, Panel):<EOL><INDENT>join_major, join_minor = self._get_join_index(other, how)<EOL>this = self.reindex(major=join_major, minor=join_minor)<EOL>other = other.reindex(major=join_major, minor=join_minor)<EOL>merged_data = this._data.merge(other._data, lsuffix, rsuffix)<EOL>return self._constructor(merged_data)<EOL><DEDENT>else:<EOL><INDENT>if lsuffix or rsuffix:<EOL><INDENT>raise ValueError('<STR_LIT>'<EOL>'<STR_LIT>')<EOL><DEDENT>if how == '<STR_LIT:left>':<EOL><INDENT>how = '<STR_LIT>'<EOL>join_axes = [self.major_axis, self.minor_axis]<EOL><DEDENT>elif how == '<STR_LIT:right>':<EOL><INDENT>raise ValueError('<STR_LIT>'<EOL>'<STR_LIT>')<EOL><DEDENT>else:<EOL><INDENT>join_axes = None<EOL><DEDENT>return concat([self] + list(other), axis=<NUM_LIT:0>, join=how,<EOL>join_axes=join_axes, verify_integrity=True)<EOL><DEDENT>
Join items with other Panel either on major and minor axes column.

Parameters
----------
other : Panel or list of Panels
    Index should be similar to one of the columns in this one
how : {'left', 'right', 'outer', 'inner'}
    How to handle indexes of the two objects. Default: 'left'
    for joining on index, None otherwise
    * left: use calling frame's index
    * right: use input frame's index
    * outer: form union of indexes
    * inner: use intersection of indexes
lsuffix : string
    Suffix to use from left frame's overlapping columns
rsuffix : string
    Suffix to use from right frame's overlapping columns

Returns
-------
joined : Panel