nodes: 0, module; 1, function_definition; 2, function_name:append; 3, parameters; 4, block; 5, identifier:self; 6, identifier:other; 7, default_parameter; 8, default_parameter; 9, default_parameter; 10, expression_statement; 11, if_statement; 12, import_from_statement; 13, if_statement; 14, return_statement; 15, identifier:ignore_index; 16, False; 17, identifier:verify_integrity; 18, False; 19, identifier:sort; 20, None; 21, comment:"""
          Append rows of `other` to the end of caller, returning a new object.
  
          Columns in `other` that are not in the caller are added as new columns.
  
          Parameters
          ----------
          other : DataFrame or Series/dict-like object, or list of these
              The data to append.
          ignore_index : boolean, default False
              If True, do not use the index labels.
          verify_integrity : boolean, default False
              If True, raise ValueError on creating index with duplicates.
          sort : boolean, default None
              Sort columns if the columns of `self` and `other` are not aligned.
              The default sorting is deprecated and will change to not-sorting
              in a future version of pandas. Explicitly pass ``sort=True`` to
              silence the warning and sort. Explicitly pass ``sort=False`` to
              silence the warning and not sort.
  
              .. versionadded:: 0.23.0
  
          Returns
          -------
          DataFrame
  
          See Also
          --------
          concat : General function to concatenate DataFrame, Series
              or Panel objects.
  
          Notes
          -----
          If a list of dict/series is passed and the keys are all contained in
          the DataFrame's index, the order of the columns in the resulting
          DataFrame will be unchanged.
  
          Iteratively appending rows to a DataFrame can be more computationally
          intensive than a single concatenate. A better solution is to append
          those rows to a list and then concatenate the list with the original
          DataFrame all at once.
  
          Examples
          --------
  
          >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
          >>> df
             A  B
          0  1  2
          1  3  4
          >>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))
          >>> df.append(df2)
             A  B
          0  1  2
          1  3  4
          0  5  6
          1  7  8
  
          With `ignore_index` set to True:
  
          >>> df.append(df2, ignore_index=True)
             A  B
          0  1  2
          1  3  4
          2  5  6
          3  7  8
  
          The following, while not recommended methods for generating DataFrames,
          show two ways to generate a DataFrame from multiple data sources.
  
          Less efficient:
  
          >>> df = pd.DataFrame(columns=['A'])
          >>> for i in range(5):
          ...     df = df.append({'A': i}, ignore_index=True)
          >>> df
             A
          0  0
          1  1
          2  2
          3  3
          4  4
  
          More efficient:
  
          >>> pd.concat([pd.DataFrame([i], columns=['A']) for i in range(5)],
          ...           ignore_index=True)
             A
          0  0
          1  1
          2  2
          3  3
          4  4
          """; 22, call; 23, block; 24, elif_clause; 25, dotted_name; 26, dotted_name; 27, call; 28, block; 29, else_clause; 30, call; 31, identifier:isinstance; 32, argument_list; 33, if_statement; 34, if_statement; 35, if_statement; 36, expression_statement; 37, try_statement; 38, expression_statement; 39, expression_statement; 40, expression_statement; 41, if_statement; 42, boolean_operator; 43, block; 44, identifier:pandas; 45, identifier:core; 46, identifier:reshape; 47, identifier:concat; 48, identifier:concat; 49, identifier:isinstance; 50, argument_list; 51, expression_statement; 52, block; 53, identifier:concat; 54, argument_list; 55, identifier:other; 56, tuple; 57, call; 58, block; 59, boolean_operator; 60, block; 61, comparison_operator:other.name is None; 62, block; 63, else_clause; 64, assignment; 65, block; 66, except_clause; 67, assignment; 68, assignment; 69, assignment; 70, not_operator; 71, block; 72, call; 73, not_operator; 74, expression_statement; 75, if_statement; 76, identifier:other; 77, tuple; 78, assignment; 79, expression_statement; 80, identifier:to_concat; 81, keyword_argument; 82, keyword_argument; 83, keyword_argument; 84, identifier:Series; 85, identifier:dict; 86, identifier:isinstance; 87, argument_list; 88, expression_statement; 89, comparison_operator:other.name is None; 90, not_operator; 91, raise_statement; 92, attribute; 93, None; 94, expression_statement; 95, comment:# other must have the same index name as self, otherwise; 96, comment:# index name will be reset; 97, block; 98, identifier:idx_diff; 99, call; 100, expression_statement; 101, identifier:TypeError; 102, block; 103, identifier:other; 104, call; 105, identifier:other; 106, call; 107, identifier:other; 108, call; 109, call; 110, expression_statement; 111, identifier:isinstance; 112, argument_list; 113, call; 114, assignment; 115, call; 116, block; 117, identifier:list; 118, identifier:tuple; 119, identifier:to_concat; 120, binary_operator:[self] + other; 121, assignment; 122, identifier:ignore_index; 123, identifier:ignore_index; 124, identifier:verify_integrity; 125, identifier:verify_integrity; 126, identifier:sort; 127, identifier:sort; 128, identifier:other; 129, identifier:dict; 130, assignment; 131, attribute; 132, None; 133, identifier:ignore_index; 134, call; 135, identifier:other; 136, identifier:name; 137, assignment; 138, expression_statement; 139, attribute; 140, argument_list; 141, assignment; 142, expression_statement; 143, attribute; 144, argument_list; 145, identifier:DataFrame; 146, argument_list; 147, attribute; 148, argument_list; 149, attribute; 150, argument_list; 151, assignment; 152, identifier:other; 153, identifier:list; 154, identifier:isinstance; 155, argument_list; 156, identifier:other; 157, call; 158, attribute; 159, argument_list; 160, expression_statement; 161, list; 162, identifier:other; 163, identifier:to_concat; 164, list; 165, identifier:other; 166, call; 167, identifier:other; 168, identifier:name; 169, identifier:TypeError; 170, argument_list; 171, identifier:index; 172, None; 173, assignment; 174, attribute; 175, identifier:difference; 176, attribute; 177, identifier:combined_columns; 178, call; 179, assignment; 180, identifier:other; 181, identifier:reindex; 182, identifier:combined_columns; 183, keyword_argument; 184, call; 185, keyword_argument; 186, keyword_argument; 187, identifier:other; 188, identifier:_convert; 189, keyword_argument; 190, keyword_argument; 191, attribute; 192, identifier:equals; 193, identifier:combined_columns; 194, identifier:self; 195, call; 196, subscript; 197, identifier:DataFrame; 198, identifier:DataFrame; 199, argument_list; 200, parenthesized_expression; 201, identifier:all; 202, assignment; 203, identifier:self; 204, identifier:self; 205, identifier:other; 206, identifier:Series; 207, argument_list; 208, concatenated_string; 209, identifier:index; 210, call; 211, identifier:other; 212, identifier:index; 213, identifier:self; 214, identifier:columns; 215, attribute; 216, argument_list; 217, identifier:combined_columns; 218, call; 219, identifier:copy; 220, False; 221, attribute; 222, argument_list; 223, identifier:index; 224, identifier:index; 225, identifier:columns; 226, identifier:combined_columns; 227, identifier:datetime; 228, True; 229, identifier:timedelta; 230, True; 231, identifier:self; 232, identifier:columns; 233, attribute; 234, argument_list; 235, identifier:other; 236, integer:0; 237, identifier:other; 238, comparison_operator:self.columns.get_indexer(other.columns) >= 0; 239, identifier:other; 240, call; 241, identifier:other; 242, string; 243, string; 244, identifier:Index; 245, argument_list; 246, attribute; 247, identifier:append; 248, identifier:idx_diff; 249, attribute; 250, argument_list; 251, attribute; 252, identifier:reshape; 253, tuple; 254, identifier:self; 255, identifier:reindex; 256, keyword_argument; 257, call; 258, integer:0; 259, attribute; 260, argument_list; 261, string_content:Can only append a Series if ignore_index=True; 262, string_content:or if the Series has a name; 263, list; 264, keyword_argument; 265, identifier:self; 266, identifier:columns; 267, call; 268, identifier:append; 269, identifier:idx_diff; 270, identifier:other; 271, identifier:values; 272, integer:1; 273, call; 274, identifier:columns; 275, identifier:combined_columns; 276, attribute; 277, argument_list; 278, identifier:other; 279, identifier:reindex; 280, keyword_argument; 281, attribute; 282, identifier:name; 283, attribute; 284, attribute; 285, argument_list; 286, identifier:len; 287, argument_list; 288, attribute; 289, identifier:get_indexer; 290, attribute; 291, identifier:columns; 292, attribute; 293, identifier:other; 294, identifier:name; 295, attribute; 296, identifier:name; 297, attribute; 298, identifier:astype; 299, identifier:object; 300, identifier:other; 301, identifier:self; 302, identifier:columns; 303, identifier:other; 304, identifier:columns; 305, identifier:self; 306, identifier:columns; 307, identifier:self; 308, identifier:index; 309, identifier:self; 310, identifier:columns
code: def append(self, other, ignore_index=False,
                 verify_integrity=False, sort=None):
          """
          Append rows of `other` to the end of caller, returning a new object.
  
          Columns in `other` that are not in the caller are added as new columns.
  
          Parameters
          ----------
          other : DataFrame or Series/dict-like object, or list of these
              The data to append.
          ignore_index : boolean, default False
              If True, do not use the index labels.
          verify_integrity : boolean, default False
              If True, raise ValueError on creating index with duplicates.
          sort : boolean, default None
              Sort columns if the columns of `self` and `other` are not aligned.
              The default sorting is deprecated and will change to not-sorting
              in a future version of pandas. Explicitly pass ``sort=True`` to
              silence the warning and sort. Explicitly pass ``sort=False`` to
              silence the warning and not sort.
  
              .. versionadded:: 0.23.0
  
          Returns
          -------
          DataFrame
  
          See Also
          --------
          concat : General function to concatenate DataFrame, Series
              or Panel objects.
  
          Notes
          -----
          If a list of dict/series is passed and the keys are all contained in
          the DataFrame's index, the order of the columns in the resulting
          DataFrame will be unchanged.
  
          Iteratively appending rows to a DataFrame can be more computationally
          intensive than a single concatenate. A better solution is to append
          those rows to a list and then concatenate the list with the original
          DataFrame all at once.
  
          Examples
          --------
  
          >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
          >>> df
             A  B
          0  1  2
          1  3  4
          >>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))
          >>> df.append(df2)
             A  B
          0  1  2
          1  3  4
          0  5  6
          1  7  8
  
          With `ignore_index` set to True:
  
          >>> df.append(df2, ignore_index=True)
             A  B
          0  1  2
          1  3  4
          2  5  6
          3  7  8
  
          The following, while not recommended methods for generating DataFrames,
          show two ways to generate a DataFrame from multiple data sources.
  
          Less efficient:
  
          >>> df = pd.DataFrame(columns=['A'])
          >>> for i in range(5):
          ...     df = df.append({'A': i}, ignore_index=True)
          >>> df
             A
          0  0
          1  1
          2  2
          3  3
          4  4
  
          More efficient:
  
          >>> pd.concat([pd.DataFrame([i], columns=['A']) for i in range(5)],
          ...           ignore_index=True)
             A
          0  0
          1  1
          2  2
          3  3
          4  4
          """
          if isinstance(other, (Series, dict)):
              if isinstance(other, dict):
                  other = Series(other)
              if other.name is None and not ignore_index:
                  raise TypeError('Can only append a Series if ignore_index=True'
                                  ' or if the Series has a name')
  
              if other.name is None:
                  index = None
              else:
                  # other must have the same index name as self, otherwise
                  # index name will be reset
                  index = Index([other.name], name=self.index.name)
  
              idx_diff = other.index.difference(self.columns)
              try:
                  combined_columns = self.columns.append(idx_diff)
              except TypeError:
                  combined_columns = self.columns.astype(object).append(idx_diff)
              other = other.reindex(combined_columns, copy=False)
              other = DataFrame(other.values.reshape((1, len(other))),
                                index=index,
                                columns=combined_columns)
              other = other._convert(datetime=True, timedelta=True)
              if not self.columns.equals(combined_columns):
                  self = self.reindex(columns=combined_columns)
          elif isinstance(other, list) and not isinstance(other[0], DataFrame):
              other = DataFrame(other)
              if (self.columns.get_indexer(other.columns) >= 0).all():
                  other = other.reindex(columns=self.columns)
  
          from pandas.core.reshape.concat import concat
          if isinstance(other, (list, tuple)):
              to_concat = [self] + other
          else:
              to_concat = [self, other]
          return concat(to_concat, ignore_index=ignore_index,
                        verify_integrity=verify_integrity,
                        sort=sort)