我创建了一个名为’salary’的函数。如果工资低于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’的列。通过使用apply转换,我创建了一个新的列’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 2df['salary_level'] = df.apply(sal)
错误: (“‘Series’ object has no attribute ‘x'”, ‘occurred at index salary’)
回答:
如果你正在使用类中的方法,像你这样的情况,尝试这样做:
df['salary_level']= df['salary'].apply(lambda x : Salary(x).sal())