gpt4 book ai didi

python - Pandas 中的动态过滤/屏蔽

转载 作者:行者123 更新时间:2023-12-04 08:15:17 27 4
gpt4 key购买 nike

我有一个包含员工信息的 Pandas 数据框,如下所示:

df=pd.DataFrame({
'Id':[1,2,3,4],
'Name':['Joe','Henry','Sam','Max'],
'Salary':[70000,80000,60000,90000],
'ManagerId':[3,4,np.nan,np.nan]
})

Id Name Salary ManagerId
0 1 Joe 70000 3.0
1 2 Henry 80000 4.0
2 3 Sam 60000 NaN
3 4 Max 90000 NaN

我需要做的是过滤员工的薪水超过他的经理(在这种情况下,乔因为他的薪水高于他的经理山姆)。
0   1    Joe   70000        3.0
由于 Id 和 Manager Id 之间的关系,我认为我可以使用循环作为最后的手段,但这似乎真的是手动的,而且看起来也很丑陋。我想知道我是否可以通过 mask 来做到这一点。作为初学者,我目前只能做条件静态的简单屏蔽,比如过滤工资超过60000的员工。但是在这种情况下,每个员工的条件是不同的。
我不知道这种技术叫什么,所以我只是编了个标题。
谢谢你的帮助。

最佳答案

想法是匹配的ManagerID来自 Salary来自 Id ,因此可能比较更大和过滤器:

df = df[df['Salary'].gt(df['ManagerID'].map(df.set_index(['Id'])['Salary']))]
print (df)
Id Name Salary ManagerID
0 1 Joe 70000 3.0
详情 :
print (df['ManagerID'].map(df.set_index(['Id'])['Salary']))
0 60000.0
1 90000.0
2 NaN
3 NaN
Name: ManagerID, dtype: float64

关于python - Pandas 中的动态过滤/屏蔽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65734186/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com