Python 在给定另一列值的情况下,计算该列上的一次性出现值
我有这样的数据集: df= 我被要求数一数2003年只有一个人持有多少个“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个,在“年”中不
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