Currently, these always return a np.ndarray, even when the input is an e.g. pd.Series.
By making these functions aware of the potential __array_ufunc__ or __array_function__ methods, it can automatically "lift" itself, so that the types of ufunc-aware instances can pass-though.
It's probably best to use np.frompyfunc for this.
Note that this will require additional @overload's.