我试图根据数据帧每行中的多个条件动态计算中值,但没有达到这一点
基本上,对于每一行,我都在计算同一部门中B级员工的薪酬高于该行所列薪酬的人数。我能够使用lambda函数使计数正常工作:
df['B Count'] = df.apply(lambda x: sum(df[(df['Department'] == x['Department']) & (df['Rank'] == 'B')]['Pay'] > x['Pay']), axis=1)
但是,我现在需要计算满足这些条件的每种情况的中位数。所以在数据框的第x行,我需要所有其他匹配x['Department']和df['Rank']='B'的df['Pay']的中位数。我不能用.median()代替sum(),因为这给了我中位数,而不是工资中位数。有什么想法吗
使用下面的假数据,上面的“B计数”代码统计每个部门中B的数量,其工资高于每个A。该部分工作正常。我想要的是构建“B中位数”列,计算同一部门中薪酬高于每个A的每个部门的B中位数薪酬
Person Department Rank Pay B Count B Median
1 One A 1000 1 1500
2 One B 800
3 One A 500 2 1150
4 One A 3000 0
5 One B 1500
6 Two B 2000
7 Two B 1800
8 Two A 1500 3 1800
9 Two B 1700
10 Two B 1000
我可以用一个函数做我想做的事情:
你们中有谁知道更好的方法来实现这个结果吗
相关问题 更多 >
编程相关推荐