Как применить лямбда-функцию для очистки имен столбцов в пандах? - PullRequest
0 голосов
/ 17 июня 2019

У меня есть набор данных с именами столбцов, в которых есть опечатки, например, «Адрес%», «Единица», мне нужно удалить% и убрать пробел

Просто ниже будет работать

X.columns = X.columns.str.replace('%', '')
X.columns = X.columns.str.strip()

Но у меня есть класс конвейера

class ApplyTransformer(TransformerMixin):

    def __init__(self, func):
        self.func = func

    def fit(self, X,  y = None):
        return self

    def transform(self, X):
        X = self.func(X)
        return X 

Создан конвейер и используется лямбда-функция, но не работает,

pipeline = Pipeline([
            ('Remove %', ApplyTransformer(lambda X:  ['' if '%' in x else x for x in X.columns]  ))            
            ])

Итак, как написать лямбду для выполнения этой операции?

1 Ответ

0 голосов
/ 17 июня 2019

Под "не работает", я думаю, вы имеете в виду, что датафрейм пропал и выходят только имена столбцов.

Попробуйте это:

def my_column_name_changer (X): 
    X.columns = ['' if '%' in x else x for x in X.columns]
    return X
pipeline = Pipeline([
            ('Remove %', ApplyTransformer(my_column_name_changer))            
            ])
...