in core/maxframe/dataframe/indexing/where.py [0:0]
def __call__(self, df_or_series):
def _check_input_index(obj, axis=None):
axis = axis if axis is not None else self.axis
if isinstance(obj, DATAFRAME_TYPE) and (
df_or_series.columns_value.key != obj.columns_value.key
or df_or_series.index_value.key != obj.index_value.key
):
raise NotImplementedError("Aligning different indices not supported")
elif (
isinstance(obj, SERIES_TYPE)
and df_or_series.axes[axis].index_value.key != obj.index_value.key
):
raise NotImplementedError("Aligning different indices not supported")
_check_input_index(self.cond, axis=0)
_check_input_index(self.other)
if isinstance(df_or_series, DATAFRAME_TYPE):
mock_obj = build_df(df_or_series)
else:
mock_obj = build_series(df_or_series)
if isinstance(self.other, (pd.DataFrame, DATAFRAME_TYPE)):
mock_other = build_df(self.other)
elif isinstance(self.other, (pd.Series, SERIES_TYPE)):
mock_other = build_series(self.other)
else:
mock_other = self.other
result_df = mock_obj.where(
np.zeros(mock_obj.shape).astype(bool),
other=mock_other,
axis=self.axis,
level=self.level,
errors=self.errors,
try_cast=self.try_cast,
)
inputs = filter_inputs([df_or_series, self.cond, self.other])
if isinstance(df_or_series, DATAFRAME_TYPE):
return self.new_dataframe(
inputs,
shape=df_or_series.shape,
dtypes=result_df.dtypes,
index_value=df_or_series.index_value,
columns_value=df_or_series.columns_value,
)
else:
return self.new_series(
inputs,
shape=df_or_series.shape,
name=df_or_series.name,
dtype=result_df.dtype,
index_value=df_or_series.index_value,
)