code: def inner_join(left, right, on=None, suffixes=('_x', '_y'), mapjoin=False):
      
  
      return join(left, right, on, suffixes=suffixes, mapjoin=mapjoin)
docs: Inner join two collections.
  
      If `on` is not specified, we will find the common fields of the left and right collection.
      `suffixes` means that if column names conflict, the suffixes will be added automatically.
      For example, both left and right has a field named `col`,
      there will be col_x, and col_y in the joined collection.
  
      :param left: left collection
      :param right: right collection
      :param on: fields to join on
      :param suffixes: when name conflict, the suffixes will be added to both columns.
      :return: collection
  
      :Example:
  
      >>> df.dtypes.names
      ['name', 'id']
      >>> df2.dtypes.names
      ['name', 'id1']
      >>> df.inner_join(df2)
      >>> df.inner_join(df2, on='name')
      >>> df.inner_join(df2, on=('id', 'id1'))
      >>> df.inner_join(df2, on=['name', ('id', 'id1')])
      >>> df.inner_join(df2, on=[df.name == df2.name, df.id == df2.id1])