in core/maxframe/dataframe/window/rolling.py [0:0]
def __call__(self, rolling):
inp = rolling.input
if isinstance(inp, DATAFRAME_TYPE):
pd_index = inp.index_value.to_pandas()
empty_df = build_empty_df(inp.dtypes, index=pd_index[:0])
params = rolling.params.copy()
if params["win_type"] == "freq":
params["win_type"] = None
if self.func != "count":
empty_df = empty_df._get_numeric_data()
test_df = empty_df.rolling(**params).agg(self.func)
if self.axis == 0:
index_value = inp.index_value
else:
index_value = parse_index(
test_df.index, rolling.params, inp, store_data=False
)
return self.new_dataframe(
[inp],
shape=(inp.shape[0], test_df.shape[1]),
dtypes=test_df.dtypes,
index_value=index_value,
columns_value=parse_index(test_df.columns, store_data=True),
)
else:
pd_index = inp.index_value.to_pandas()
empty_series = build_empty_series(
inp.dtype, index=pd_index[:0], name=inp.name
)
test_obj = empty_series.rolling(**rolling.params).agg(self.func)
if isinstance(test_obj, pd.DataFrame):
return self.new_dataframe(
[inp],
shape=(inp.shape[0], test_obj.shape[1]),
dtypes=test_obj.dtypes,
index_value=inp.index_value,
columns_value=parse_index(test_obj.dtypes.index, store_data=True),
)
else:
return self.new_series(
[inp],
shape=inp.shape,
dtype=test_obj.dtype,
index_value=inp.index_value,
name=test_obj.name,
)