Skip to content

Commit 5eb2805

Browse files
committed
Merge branch 'prefix'
2 parents 4fac09e + 922974d commit 5eb2805

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
@@ -229,7 +229,8 @@ def fit(self, X, y=None):
229229
_call_fit(self.built_default.fit, Xt, y)
230230
return self
231231

232-
def get_names(self, columns, transformer, x, alias=None):
232+
def get_names(self, columns, transformer, x, alias=None, prefix='',
233+
suffix=''):
233234
"""
234235
Return verbose names for the transformed columns.
235236
@@ -245,6 +246,9 @@ def get_names(self, columns, transformer, x, alias=None):
245246
else:
246247
name = columns
247248
num_cols = x.shape[1] if len(x.shape) > 1 else 1
249+
250+
output = []
251+
248252
if num_cols > 1:
249253
# If there are as many columns as classes in the transformer,
250254
# infer column names from classes names.
@@ -261,12 +265,17 @@ def get_names(self, columns, transformer, x, alias=None):
261265
else:
262266
names = _get_feature_names(transformer)
263267
if names is not None and len(names) == num_cols:
264-
return ['%s_%s' % (name, o) for o in names]
268+
output = ['%s_%s' % (name, o) for o in names]
265269
# otherwise, return name concatenated with '_1', '_2', etc.
266270
else:
267-
return [name + '_' + str(o) for o in range(num_cols)]
271+
output = [name + '_' + str(o) for o in range(num_cols)]
268272
else:
269-
return [name]
273+
output = [name]
274+
275+
prefix = prefix or ''
276+
suffix = suffix or ''
277+
return ['{}_{}_{}'.format(prefix, n, suffix) for x in output]
278+
270279

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

315324
alias = options.get('alias')
325+
prefix = options.get('prefix')
326+
suffix = options.get('suffix')
316327
self.transformed_names_ += self.get_names(
317-
columns, transformers, Xt, alias)
328+
columns, transformers, Xt, alias, prefix, suffix)
318329

319330
# handle features not explicitly selected
320331
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)