def _perform_operation(self, dataframe, key, schema, value_func, operation):
# Check for references
references = (dataframe.columns.get_level_values(0).tolist()
if isinstance(dataframe.columns, pd.MultiIndex)
else [None])
for reference in references:
metric_df = value_func(dataframe, schema, reference=reference)
operation_key = ('{}_{}'.format(metric_df.name, key)
if reference is None
else (reference, '{}_{}'.format(metric_df.name[1], key)))
if isinstance(dataframe.index, pd.MultiIndex):
unstack_levels = list(range(1, len(dataframe.index.levels)))
dataframe[operation_key] = metric_df.groupby(level=unstack_levels).apply(operation)
else:
dataframe[operation_key] = operation(metric_df)
评论列表
文章目录