Example #1
0
    def __new__(cls, data: Series):
        # CombinedDatetimelikeProperties isn't really instantiated. Instead
        # we need to choose which parent (datetime or timedelta) is
        # appropriate. Since we're checking the dtypes anyway, we'll just
        # do all the validation here.

        if not isinstance(data, ABCSeries):
            raise TypeError(
                f"cannot convert an object of type {type(data)} to a datetimelike index"
            )

        orig = data if is_categorical_dtype(data.dtype) else None
        if orig is not None:
            data = data._constructor(
                orig.array,
                name=orig.name,
                copy=False,
                dtype=orig._values.categories.dtype,
            )

        if is_datetime64_dtype(data.dtype):
            return DatetimeProperties(data, orig)
        elif is_datetime64tz_dtype(data.dtype):
            return DatetimeProperties(data, orig)
        elif is_timedelta64_dtype(data.dtype):
            return TimedeltaProperties(data, orig)
        elif is_period_dtype(data.dtype):
            return PeriodProperties(data, orig)

        raise AttributeError(
            "Can only use .dt accessor with datetimelike values")
Example #2
0
def wrap_result(obj: Series, result: np.ndarray) -> Series:
    """
    Wrap a single 1D result.
    """
    obj = obj._selected_obj

    return obj._constructor(result, obj.index, name=obj.name)