所以,我有这样的数据集: df=Id Pos Salary year 00 Chief 2000 200301 Assistant 1800 200302 Assistant 1950 200303 Analyst 5200 200304 Guard 1000 200305 Chief 2500 200406 Service 800 200307 Exec 10000 200508 Exec 12000 200509 Sales 1100 2007Pos我被要求计算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,但我不确定语法。有任何想法吗?提前致谢
1 回答
月关宝盒
TA贡献1772条经验 获得超5个赞
year == 2003
在查找重复项之前,您可以先提取行的子集。
此外,您还需要在计算总和之前反转结果,因为duplicated
会将重复的出现标记为 True,而您需要唯一出现的总和。
尝试这个:(~(df[df.year==2003].duplicated(subset=['Pos'], keep=False))).sum()
添加回答
举报
0/150
提交
取消