def dependent_columns(self, dataset): value = parse_float(self.value) if value is not None: return [] # if value is not number or date, add as a column return [self.value]
def group(self): """For when aggregation is called with a group parameter.""" self.column = self.column.apply(lambda value: parse_float(value)) group_dframe = self.dframe[self.groups].join(self.column) indices = group_dframe.reset_index().set_index( self.groups + [self.name]) def max_index_for_row(row): groups = row[self.groups] value = row[self.name] xsection = indices.xs(groups, level=self.groups) if isnan(value): return minint() max_index = xsection.get_value(value, 'index') if isinstance(max_index, Series): max_index = max_index.max() return max_index groupby_max = self._groupby().max().reset_index() column = groupby_max.apply(max_index_for_row, axis=1).apply(int) column.name = self.name return DataFrame(column).join(groupby_max[self.groups])
def eval(self, row, dataset): value = parse_float(self.value) if value is not None: return value # it may be a variable field = self.field(row) # test is date and parse as date return self.__parse_field(field, dataset)