Python 如何在pandas中定义用户定义的函数
我有一个csv文件,其中包含以下信息Python 如何在pandas中定义用户定义的函数,python,pandas,Python,Pandas,我有一个csv文件,其中包含以下信息 name salary department a 2500 x b 5000 y c 10000 y d 20000 x 我需要使用Pandas将其转换为如下形式 dept name position x a Normal Employee x b Normal Employee y
name salary department
a 2500 x
b 5000 y
c 10000 y
d 20000 x
我需要使用Pandas将其转换为如下形式
dept name position
x a Normal Employee
x b Normal Employee
y c Experienced Employee
y d Experienced Employee
如果工资为8000&&您可以定义两个掩码并将其传递给
np。其中
:
In [91]:
normal = df['salary'] <= 8000
experienced = (df['salary'] > 8000) & (df['salary'] <= 25000)
df['position'] = np.where(normal, 'normal emplyee', np.where(experienced, 'experienced employee', 'unknown'))
df
Out[91]:
name salary department position
0 a 2500 x normal emplyee
1 b 5000 y normal emplyee
2 c 10000 y experienced employee
3 d 20000 x experienced employee
一个有用的函数是
apply
:
data_df['position'] = data_df['salary'].apply(lambda salary: 'Normal Employee' if salary <= 8000 else 'Experienced Employee', axis=1)
data_-df['position']=data_-df['salary']。应用(lambda-salary:'Normal Employee',如果salary我将使用一个简单的函数,如:
def f(x):
if x <= 8000:
x = 'Normal Employee'
elif 8000 < x <= 25000:
x = 'Experienced Employee'
return x
apply
对于大df来说会很慢apply
对于大df来说会很慢当我们使用groupby时如何获得正常员工的计数你能解释一下你的意思吗?你是在使用df.groupby('position').count()吗?
data_df['position'] = data_df['salary'].apply(lambda salary: 'Normal Employee' if salary <= 8000 else 'Experienced Employee', axis=1)
def f(x):
if x <= 8000:
x = 'Normal Employee'
elif 8000 < x <= 25000:
x = 'Experienced Employee'
return x
df['position'] = df['salary'].apply(f)