class_docstr: Stores all actual data and typing information for an entityset
  
  Attributes:
      id
      dataframe_dict
      relationships
      time_type
  
  Properties:
      metadata
class_docstr_tok: ["Stores","all","actual","data","and","typing","information","for","an","entityset","Attributes",":","id","dataframe_dict","relationships","time_type","Properties",":","metadata"]
docstr: Combine entityset with another to create a new entityset with the
  combined data of both entitysets.
docstr_tok: ["Combine","entityset","with","another","to","create","a","new","entityset","with","the","combined","data","of","both","entitysets","."]
code: def concat(self, other, inplace=False):
      """Combine entityset with another to create a new entityset with the
      combined data of both entitysets.
      """
      if not self.__eq__(other):
          raise ValueError(
              "Entitysets must have the same dataframes, relationships"
              ", and column names",
          )
  
      if inplace:
          combined_es = self
      else:
          combined_es = copy.deepcopy(self)
  
      lib = pd
      if self.dataframe_type == Library.SPARK:
          lib = ps
      elif self.dataframe_type == Library.DASK:
          lib = dd
  
      has_last_time_index = []
      for df in self.dataframes:
          self_df = df
          other_df = other[df.ww.name]
          combined_df = lib.concat([self_df, other_df])
          # If both DataFrames have made indexes, there will likely
          # be overlap in the index column, so we use the other values
          if self_df.ww.metadata.get(
              "created_index"
          ) or other_df.ww.metadata.get(
              "created_index",
          ):
              columns = [
                  col
                  for col in combined_df.columns
                  if col != df.ww.index or col != df.ww.time_index
              ]
          else:
              columns = [df.ww.index]
          combined_df.drop_duplicates(columns, inplace=True)
  
          self_lti_col = df.ww.metadata.get("last_time_index")
          other_lti_col = other[df.ww.name].ww.metadata.get(
              "last_time_index"
          )
          if self_lti_col is not None or other_lti_col is not None:
              has_last_time_index.append(df.ww.name)
  
          combined_es.replace_dataframe(
              dataframe_name=df.ww.name,
              df=combined_df,
              recalculate_last_time_indexes=False,
              already_sorted=False,
          )
  
      if has_last_time_index:
          combined_es.add_last_time_indexes(
              updated_dataframes=has_last_time_index
          )
  
      combined_es.reset_data_description()
  
      return combined_es
  
imports: import copy
  import logging
  import warnings
  from collections import defaultdict
  import numpy
  import pandas
  from woodwork import init_series
  from woodwork.logical_types import Datetime, LatLong
  from featuretools.entityset import deserialize, serialize
  from featuretools.entityset.relationship import Relationship, RelationshipPath
  from featuretools.feature_base.feature_base import _ES_REF
  from featuretools.utils.gen_utils import Library, import_or_none, is_instance
  from featuretools.utils.plot_utils import check_graphviz, get_graphviz_format, save_graph
  from featuretools.utils.wrangle import _check_timedelta
label_desc: Use image node_id 32 for calling the EntitySet obj's underlying member method code with example usage: obj.concat(other, inplace) and returns: combined_es