code: def _construct_result(left, result, index, name, dtype=None):
      
      out = left._constructor(result, index=index, dtype=dtype)
      out = out.__finalize__(left)
      out.name = name
      return out
docs: If the raw op result has a non-None name (e.g. it is an Index object) and
      the name argument is None, then passing name to the constructor will
      not be enough; we still need to override the name attribute.