class_docstr: Determines the part of day of a datetime.
  
  Description:
      For a list of datetimes, determines the part of day the datetime
      falls into, based on the hour.
      If the hour falls from 4 to 5, the part of day is 'dawn'.
      If the hour falls from 6 to 7, the part of day is 'early morning'.
      If the hour falls from 8 to 10, the part of day is 'late morning'.
      If the hour falls from 11 to 13, the part of day is 'noon'.
      If the hour falls from 14 to 16, the part of day is 'afternoon'.
      If the hour falls from 17 to 19, the part of day is 'evening'.
      If the hour falls from 20 to 22, the part of day is 'night'.
      If the hour falls into 23, 24, or 1 to 3, the part of day is 'midnight'.
  
  Examples:
      >>> from datetime import datetime
      >>> dates = [datetime(2020, 1, 11, 6, 2, 1),
      ...          datetime(2021, 3, 31, 4, 2, 1),
      ...          datetime(2020, 3, 4, 9, 2, 1)]
      >>> part_of_day = PartOfDay()
      >>> part_of_day(dates).tolist()
      ['early morning', 'dawn', 'late morning']
code: def get_function(self):
      replacement_dict = self.construct_replacement_dict()
  
      def part_of_day(vals):
          ans = vals.dt.hour.replace(replacement_dict)
          return ans
  
      return part_of_day
  
file_path: featuretools/featuretools/primitives/standard/transform/datetime/part_of_day.py
imports: import numpy
  import pandas
  from woodwork.column_schema import ColumnSchema
  from woodwork.logical_types import Categorical, Datetime
  from featuretools.primitives.base import TransformPrimitive
  from featuretools.utils.gen_utils import Library
label_desc: Use image node_id 2 for calling the PartOfDay obj's underlying member method code with example usage: obj.get_function() and returns: part_of_day, ans