code: def update_feature_columns(feature_data, data):
      new_cols = {}
      for item in feature_data:
          names = item[0].get_feature_names()
          values = item[1]
          assert len(names) == len(values)
          for name, value in zip(names, values):
              new_cols[name] = value
  
      # Handle the case where a dict is being updated
      if isinstance(data, dict):
          data.update(new_cols)
          return data
  
      # Handle pandas input
      if isinstance(data, pd.DataFrame):
          return pd.concat(
              [data, pd.DataFrame(new_cols, index=data.index)], axis=1
          )
  
      # Handle dask/spark input
      for name, col in new_cols.items():
          col.name = name
          if is_instance(data, dd, "DataFrame"):
              data = dd.concat([data, col], axis=1)
          else:
              data = ps.concat([data, col], axis=1)
      return data
  
imports: from datetime import datetime
  from functools import partial
  import numpy
  import pandas
  import pandas.api.types
  from featuretools.entityset.relationship import RelationshipPath
  from featuretools.exceptions import UnknownFeature
  from featuretools.feature_base import AggregationFeature, DirectFeature, GroupByTransformFeature, IdentityFeature, TransformFeature
  from featuretools.utils import Trie
  from featuretools.utils.gen_utils import Library, get_relationship_column_id, import_or_none, is_instance
label_desc: Use image node_id 3 for calling a global function with example usage: update_feature_columns(feature_data, data) and returns: data, data, pd