所以,我有这种数据集: 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
我被要求计算在2003年只有一个人持有多少个“ Pos
”。(例如,由于“助手”由两个人持有,因此该数字为4)
通过跑步
(df.duplicated(subset=['Pos'], keep=False)).sum()
我不考虑列'year
'
我尝试过
(df.duplicated(subset=['Pos', 'year'], keep=False)).sum()
但是随后它计算pos
和years
的单次出现次数。 (总共六个:一年中仅一个人担任的职位为4个,对于“年”中不重复的行加2个)
我相信我需要使用df.groupby,但是我不确定语法是否正确。有任何想法吗?预先感谢
答案 0 :(得分:0)
在找到重复项之前,您可以先使用year == 2003
提取行的子集。
另外,在计算总和之前,您需要对结果求逆,因为duplicated
会将重复出现的事件标记为True,而您需要将唯一出现的事件求和。
试试这个:
(~(df[df.year==2003].duplicated(subset=['Pos'], keep=False))).sum()