给定另一列值,计算一列上一次性出现的值

所以,我有这样的数据集: df=


Id    Pos        Salary  year

                               

00    Chief      2000    2003

01    Assistant  1800    2003

02    Assistant  1950    2003

03    Analyst    5200    2003

04    Guard      1000    2003

05    Chief      2500    2004

06    Service     800    2003

07    Exec      10000    2005

08    Exec      12000    2005

09    Sales      1100    2007

Pos我被要求计算2003 年只有一个人持有多少个“ ”。(在本例中,该数字为 4,因为 pos“助理”由 2 个人持有)


通过跑步


(df.duplicated(subset=['Pos'], keep=False)).sum()


year我在不考虑列“ ”的情况下获得了单次出现的计数


我试过


(df.duplicated(subset=['Pos', 'year'], keep=False)).sum()


pos但随后它会计算和的单次出现次数years。(总共 6 个:4 个用于所有年份中仅由一个人担任的职位,加上 2 个用于“年份”中不重复的行)


我相信我需要使用 df.groupby,但我不确定语法。有任何想法吗?提前致谢


哔哔one
浏览 81回答 1
1回答

月关宝盒

year == 2003在查找重复项之前,您可以先提取行的子集。此外,您还需要在计算总和之前反转结果,因为duplicated会将重复的出现标记为 True,而您需要唯一出现的总和。尝试这个:(~(df[df.year==2003].duplicated(subset=['Pos'], keep=False))).sum()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python