Python 在给定另一列值的情况下,计算该列上的一次性出现值

Python 在给定另一列值的情况下,计算该列上的一次性出现值,python,pandas,count,duplicates,dataset,Python,Pandas,Count,Duplicates,Dataset,我有这样的数据集: df= 我被要求数一数2003年只有一个人持有多少个“Pos”。(本例为4,因为pos“助手”由2人持有) 通过运行 (df.duplicated(subset=['Pos'],keep=False)).sum() 我得到的是单个事件的计数,而不考虑“年””列 我试过了 (df.duplicated(subset=['Pos','year',keep=False)).sum() 但随后它统计了pos和年份的单个事件。(总共六个:所有年份只有一个人担任的职位为4个,在“年”中不

我有这样的数据集: df=

我被要求数一数2003年只有一个人持有多少个“
Pos
”。(本例为4,因为pos“助手”由2人持有)

通过运行

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

我得到的是单个事件的计数,而不考虑“
年”
”列

我试过了

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

但随后它统计了
pos
年份的单个事件。(总共六个:所有年份只有一个人担任的职位为4个,在“年”中不重复的行为2个)


我相信我需要使用df.groupby,但我不确定是否有syntaxis。有什么想法吗?提前感谢

在找到重复的行之前,您可以先提取
年份==2003
的行子集。
此外,您还需要在计算总和之前反转结果,因为
duplicated
会将重复出现的次数标记为True,而您需要唯一出现次数的总和。
试试这个:
(~(df[df.year==2003).重复(subset=['Pos'],keep=False))).sum()

使用
df.loc[df['year].eq(2003),“Pos”].drop_duplicates(keep=False).nunique()
(df[df.year==2003].重复(subset=[Pos'],keep=False)).sum()).sum()完成了这项工作。尽管我认为“~”操作符已经在反转“true”结果。谢谢你的帮助
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