Skip to content

Commit 922974d

Browse files
committed
adding prefix/suffix option
1 parent 1a8ea06 commit 922974d

File tree

3 files changed

+22
-8
lines changed

3 files changed

+22
-8
lines changed

sklearn_pandas/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = '1.8.1'
1+
__version__ = '1.8.2'
22

33
from .dataframe_mapper import DataFrameMapper # NOQA
44
from .cross_validation import cross_val_score, GridSearchCV, RandomizedSearchCV # NOQA

sklearn_pandas/dataframe_mapper.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,8 @@ def fit(self, X, y=None):
228228
_call_fit(self.built_default.fit, Xt, y)
229229
return self
230230

231-
def get_names(self, columns, transformer, x, alias=None):
231+
def get_names(self, columns, transformer, x, alias=None, prefix='',
232+
suffix=''):
232233
"""
233234
Return verbose names for the transformed columns.
234235
@@ -244,6 +245,9 @@ def get_names(self, columns, transformer, x, alias=None):
244245
else:
245246
name = columns
246247
num_cols = x.shape[1] if len(x.shape) > 1 else 1
248+
249+
output = []
250+
247251
if num_cols > 1:
248252
# If there are as many columns as classes in the transformer,
249253
# infer column names from classes names.
@@ -260,12 +264,17 @@ def get_names(self, columns, transformer, x, alias=None):
260264
else:
261265
names = _get_feature_names(transformer)
262266
if names is not None and len(names) == num_cols:
263-
return ['%s_%s' % (name, o) for o in names]
267+
output = ['%s_%s' % (name, o) for o in names]
264268
# otherwise, return name concatenated with '_1', '_2', etc.
265269
else:
266-
return [name + '_' + str(o) for o in range(num_cols)]
270+
output = [name + '_' + str(o) for o in range(num_cols)]
267271
else:
268-
return [name]
272+
output = [name]
273+
274+
prefix = prefix or ''
275+
suffix = suffix or ''
276+
return ['{}_{}_{}'.format(prefix, n, suffix) for x in output]
277+
269278

270279
def get_dtypes(self, extracted):
271280
dtypes_features = [self.get_dtype(ex) for ex in extracted]
@@ -312,8 +321,10 @@ def _transform(self, X, y=None, do_fit=False):
312321
extracted.append(_handle_feature(Xt))
313322

314323
alias = options.get('alias')
324+
prefix = options.get('prefix')
325+
suffix = options.get('suffix')
315326
self.transformed_names_ += self.get_names(
316-
columns, transformers, Xt, alias)
327+
columns, transformers, Xt, alias, prefix, suffix)
317328

318329
# handle features not explicitly selected
319330
if self.built_default is not False:

sklearn_pandas/features_generator.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
def gen_features(columns, classes=None):
1+
def gen_features(columns, classes=None, arguments={}):
22
"""Generates a feature definition list which can be passed
33
into DataFrameMapper
44
@@ -25,6 +25,9 @@ def gen_features(columns, classes=None):
2525
2626
If None value selected, then each feature left as is.
2727
28+
arguments a dictionary of additional values such as {'prefix': 'x',
29+
'suffix': 'na'}
30+
2831
"""
2932
if classes is None:
3033
return [(column, None) for column in columns]
@@ -50,6 +53,6 @@ def gen_features(columns, classes=None):
5053
if not feature_transformers:
5154
feature_transformers = None
5255

53-
feature_defs.append((column, feature_transformers))
56+
feature_defs.append((column, feature_transformers, arguments))
5457

5558
return feature_defs

0 commit comments

Comments
 (0)