如何在带有IF语句的列中添加值?

2024-09-19 23:43:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据:

Positions, Department, Salaries
Teacher, 600101, $1000
Janitor, 600230, $500
Principle, 600154, $1500
Secretary, 600342, $750
Manager, 600411, $2000
Teacher, 600105, $1200
Secretary, 600311, $1000
Teacher, 600300, $4000

我试图把从6001x开始的部门的所有工资相加,然后再把从6002xx到6004xx开始的部门的所有工资相加

我有这个,而且有点用

def get_salaries(desc)
    lineAmount = df.loc[(df['Position'] == desc) & (df['Department'] < 600200) & (df['Department'] >= 600100)]['Salaries'].values[0]
    return lineAmount

totalSalaries = 0
totalSalaries += get_salaries('Teacher")
print(totalSalaries)

这将只返回第一份工资。如果去掉.values[0],那么它将返回正确部门的教师工资,但它也会在一个输出中返回所有这些工资以及索引,并且不会将它们相加。我需要能够从6001x开始的部门的教师工资中加上1000美元和1200美元,我就是想不通。感谢您的帮助


Tags: 数据dfgetdesc部门departmentvaluesteacher
1条回答
网友
1楼 · 发布于 2024-09-19 23:43:50

您可以为60001x和6002xx中的每一个定义一个新列作为部门id,然后使用groupby:

df['department_id']=np.floor(df['Department']/100)

df.groupby(['department_id'])['Salaries'].sum()

相关问题 更多 >