in core/maxframe/dataframe/indexing/loc.py [0:0]
def __call__(self, inp):
inputs = [inp] + filter_inputs(self.indexes)
shape = []
sizes = []
index_value = columns_value = dtypes = None
for ax, index in enumerate(self.indexes):
param = self._calc_param(inp, ax, index)
size = param.get("shape")
sizes.append(size)
if size is not None:
shape.append(size)
if ax == 0:
index_value = param.get("index_value")
else:
columns_value = param.get("index_value")
dtypes = param.get("dtypes")
shape = tuple(shape)
if len(shape) == 0:
# scalar
if isinstance(inp, DATAFRAME_TYPE):
dtype = inp.dtypes[self.indexes[1]]
else:
dtype = inp.dtype
return self.new_scalar(inputs, dtype=dtype)
elif len(shape) == 1:
# series
if isinstance(inp, DATAFRAME_TYPE):
if sizes[0] is None:
# label on axis 0
dtype = find_common_type(list(dtypes))
return self.new_series(
inputs,
shape=shape,
dtype=dtype,
index_value=columns_value,
name=self.indexes[0],
)
else:
# label on axis 1
dtype = inp.dtypes[self.indexes[1]]
return self.new_series(
inputs,
shape=shape,
dtype=dtype,
index_value=index_value,
name=self.indexes[1],
)
else:
return self.new_series(
inputs,
shape=shape,
dtype=inp.dtype,
index_value=index_value,
name=inp.name,
)
else:
# dataframe
return self.new_dataframe(
inputs,
shape=shape,
dtypes=dtypes,
index_value=index_value,
columns_value=columns_value,
)