Используйте применять функции с классами - PullRequest
1 голос
/ 13 марта 2020

Я создал функцию «зарплата». Если зарплата меньше 30000, она вернет 0; если зарплата составляет от 30000 до 40000, она вернет 1; иначе, если он выше 40000, он вернет 2.

def salary(x):
    if x < 30000:
        return 0
    elif x >= 30000 and x < 40000:
        return 1
    else:
        return 2

В моем наборе данных «зарплата» есть только один столбец. Используя преобразование применения, я создал новый столбец salary_level, который будет сохранять значения из функции salary.

df['salary_level'] = df['salary'].apply(salary)
df.head()

Вывод

Теперь я хочу сделать то же самое с использованием классов, но я получаю сообщение об ошибке:

class Salary():
    def __init__(self,x):
        self.x = x

    def sal(self):
        if self.x < 30000:
            return 0
        elif self.x >= 30000 and self.x < 40000:
            return 1
        else:
            return 2

df['salary_level'] = df.apply(sal)

Ошибка

Ошибка: ("Объект" Series "не имеет атрибута 'x' ", 'произошло при индексной зарплате')

1 Ответ

1 голос
/ 13 марта 2020

Если вы используете метод из класса, такой как в вашем случае, попробуйте так:

df['salary_level']= df['salary'].apply(lambda x : Salary(x).sal())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...