def _maybe_resample(series, ax, kwargs): # resample against axes freq if necessary freq, ax_freq = _get_freq(ax, series) if freq is None: # pragma: no cover raise ValueError('Cannot use dynamic axis without frequency info') # Convert DatetimeIndex to PeriodIndex if isinstance(series.index, ABCDatetimeIndex): series = series.to_period(freq=freq) if ax_freq is not None and freq != ax_freq: if is_superperiod(freq, ax_freq): # upsample input series = series.copy() series.index = series.index.asfreq(ax_freq, how='s') freq = ax_freq elif _is_sup(freq, ax_freq): # one is weekly how = kwargs.pop('how', 'last') series = getattr(series.resample('D'), how)().dropna() series = getattr(series.resample(ax_freq), how)().dropna() freq = ax_freq elif is_subperiod(freq, ax_freq) or _is_sub(freq, ax_freq): _upsample_others(ax, freq, kwargs) else: # pragma: no cover raise ValueError('Incompatible frequency conversion') return freq, series
def _maybe_resample(series, ax, kwargs): # resample against axes freq if necessary freq, ax_freq = _get_freq(ax, series) if freq is None: # pragma: no cover raise ValueError("Cannot use dynamic axis without frequency info") # Convert DatetimeIndex to PeriodIndex if isinstance(series.index, ABCDatetimeIndex): series = series.to_period(freq=freq) if ax_freq is not None and freq != ax_freq: if is_superperiod(freq, ax_freq): # upsample input series = series.copy() series.index = series.index.asfreq(ax_freq, how="s") freq = ax_freq elif _is_sup(freq, ax_freq): # one is weekly how = kwargs.pop("how", "last") series = getattr(series.resample("D"), how)().dropna() series = getattr(series.resample(ax_freq), how)().dropna() freq = ax_freq elif is_subperiod(freq, ax_freq) or _is_sub(freq, ax_freq): _upsample_others(ax, freq, kwargs) else: # pragma: no cover raise ValueError("Incompatible frequency conversion") return freq, series
def test_is_superperiod_subperiod(): # input validation assert not (is_superperiod(offsets.YearEnd(), None)) assert not (is_subperiod(offsets.MonthEnd(), None)) assert not (is_superperiod(None, offsets.YearEnd())) assert not (is_subperiod(None, offsets.MonthEnd())) assert not (is_superperiod(None, None)) assert not (is_subperiod(None, None)) assert (is_superperiod(offsets.YearEnd(), offsets.MonthEnd())) assert (is_subperiod(offsets.MonthEnd(), offsets.YearEnd())) assert (is_superperiod(offsets.Hour(), offsets.Minute())) assert (is_subperiod(offsets.Minute(), offsets.Hour())) assert (is_superperiod(offsets.Second(), offsets.Milli())) assert (is_subperiod(offsets.Milli(), offsets.Second())) assert (is_superperiod(offsets.Milli(), offsets.Micro())) assert (is_subperiod(offsets.Micro(), offsets.Milli())) assert (is_superperiod(offsets.Micro(), offsets.Nano())) assert (is_subperiod(offsets.Nano(), offsets.Micro()))
def _is_sup(f1, f2): return (f1.startswith("W") and is_superperiod("D", f2)) or (f2.startswith("W") and is_superperiod(f1, "D"))
def _is_sup(f1, f2): return ((f1.startswith('W') and is_superperiod('D', f2)) or (f2.startswith('W') and is_superperiod(f1, 'D')))
def test_super_sub_symmetry(p1, p2, expected): assert is_superperiod(p1, p2) is expected assert is_subperiod(p2, p1) is expected