Skip to content
Snippets Groups Projects
Commit ec80fe8f authored by Bert Palm's avatar Bert Palm 🎇
Browse files

fixed all closed problems

parent c68a8da6
No related branches found
No related tags found
3 merge requests!193Release 1.4,!188Release 1.4,!150Rolling rework
Pipeline #11304 passed with stage
in 5 minutes and 32 seconds
......@@ -86,9 +86,6 @@ class _CustomBaseIndexer(BaseIndexer):
start, end = self._apply_skipmask(start, end)
start, end = self._apply_steps(start, end, num_values)
start, end = self._prepare_min_periods_masking(start, end, num_values)
# print('Custom')
# print(np.array([start, end]))
return start, end
def _prepare_min_periods_masking(self, start, end, num_values):
......@@ -216,16 +213,16 @@ class _VariableWindowDirectionIndexer(_CustomBaseIndexer):
ws_bw, ws_fw = self._get_center_window_sizes(self.window_size)
if center:
c1 = c2 = closed
if closed is 'neither':
if closed == 'neither':
c1, c2 = 'right', 'left'
start, _ = self._bw(num_values, ws_bw, c1)
_, end = self._fw(num_values, ws_fw, c2)
elif not self.forward:
start, end = self._bw(num_values, ws_bw, closed)
else:
elif self.forward:
start, end = self._fw(num_values, ws_fw, closed)
else:
start, end = self._bw(num_values, ws_bw, closed)
if not self.expand:
start, end = self._remove_ramps(start, end, center)
......@@ -263,6 +260,9 @@ class _VariableWindowDirectionIndexer(_CustomBaseIndexer):
s, _ = calculate_variable_window_bounds(num_values, window_size, None, None, closed, arr)
start = np.arange(num_values)
end = num_values - s[::-1]
if closed in ['left', 'neither']:
start += 1
return start, end
......
......@@ -11,16 +11,16 @@ def data():
def data_():
# s1 = pd.Series(1., index=pd.date_range("1999/12", periods=12, freq='1M') + pd.Timedelta('1d'))
# s2 = pd.Series(1., index=pd.date_range('2000/05/15', periods=8, freq='1d'))
# s = pd.concat([s1, s2]).sort_index()
# s.name = 's'
# s[15] = np.nan
s1 = pd.Series(1., index=pd.date_range("1999/12", periods=4, freq='1M') + pd.Timedelta('1d'))
s2 = pd.Series(1., index=pd.date_range('2000/05/15', periods=2, freq='1d'))
s1 = pd.Series(1., index=pd.date_range("1999/12", periods=12, freq='1M') + pd.Timedelta('1d'))
s2 = pd.Series(1., index=pd.date_range('2000/05/15', periods=8, freq='1d'))
s = pd.concat([s1, s2]).sort_index()
s.name = 's'
s[4] = np.nan
s[15] = np.nan
# s1 = pd.Series(1., index=pd.date_range("1999/12", periods=4, freq='1M') + pd.Timedelta('1d'))
# s2 = pd.Series(1., index=pd.date_range('2000/05/15', periods=2, freq='1d'))
# s = pd.concat([s1, s2]).sort_index()
# s.name = 's'
# s[4] = np.nan
return s
......@@ -39,11 +39,11 @@ def make_num_kws():
def make_dt_kws():
l = []
for window in range(1, len_s + 3):
for min_periods in [None] + list(range(window + 1)):
for win in [f'{window}d', f'{window * 32}d']:
for center in [False, True]:
for closed in [None] + ['left', 'right', 'both', 'neither']:
for closed in [None] + ['right', 'both', 'neither', 'left']:
for window in range(1, len_s + 3):
for min_periods in [None] + list(range(window + 1)):
for win in [f'{window}d', f'{window * 31}d']:
for center in [False, True]:
l.append(dict(window=win, min_periods=min_periods, center=center, closed=closed))
return l
......@@ -95,7 +95,7 @@ def test_pandas_conform_num(data, kws):
@pytest.mark.parametrize("kws", make_dt_kws())
def test_pandas_conform_dt(data, kws):
if kws.get('center', False) is True:
pass
pytest.skip('pandas has no center on dt-index')
else:
runtest_for_kw_combi(data, kws)
......@@ -106,10 +106,25 @@ def test_forward_num(data, kws):
runtest_for_kw_combi(data, kws)
# @pytest.mark.parametrize("kws", make_dt_kws())
# def test_forward_dt(data, kws):
# kws.update(forward=True)
# if kws['center'] is True:
# pytest.skip('pandas has no center on dt-index')
# else:
# runtest_for_kw_combi(data, kws)
@pytest.mark.parametrize("kws", make_dt_kws())
def test_forward_dt(data, kws):
kws.update(forward=True)
if kws.get('center', False) is True:
pytest.skip('pandas has no center on dt-index')
else:
runtest_for_kw_combi(data, kws)
# def test_centering_w_dtindex():
# s = pd.Series(0., index=pd.date_range("2000", periods=10, freq='1H'))
# s[4:7] = 1
#
# w = 2
# pd_kw= dict(window=w, center=True, min_periods=None)
# our_kw = dict(window=f'{w}h', center=True, closed='both')
# expected = s.rolling(**pd_kw).sum()
# result = customRoller(s, **our_kw, expand=False).sum()
# df = pd.DataFrame()
# df['res'] = result
# df['exp'] = expected
# print(df)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment