code: def ordinal_float(dt):
      
      try:
          return dt.toordinal() + ((((dt.microsecond / 1000000.) + dt.second) / 60. + dt.minute) / 60 + dt.hour) / 24.
      except AttributeError:
          try:
              return ordinal_float(make_datetime(dt))
          except ValueError:
              pass
      dt = list(make_datetime(val) for val in dt)
      assert(all(isinstance(val, datetime.datetime) for val in dt))
      return [ordinal_float(val) for val in dt]
docs: Like datetime.ordinal, but rather than integer allows fractional days (so float not ordinal at all)
  
      Similar to the Microsoft Excel numerical representation of a datetime object
  
      >>> ordinal_float(datetime.datetime(1970, 1, 1))
      719163.0
      >>> ordinal_float(datetime.datetime(1, 2, 3, 4, 5, 6, 7))  # doctest: +ELLIPSIS
      34.1702083334143...