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

时间:2020-09-01 04:11:55

标签: python pandas count duplicates dataset

所以,我有这种数据集: 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()

但是随后它计算posyears的单次出现次数。 (总共六个:一年中仅一个人担任的职位为4个,对于“年”中不重复的行加2个)

我相信我需要使用df.groupby,但是我不确定语法是否正确。有任何想法吗?预先感谢

1 个答案:

答案 0 :(得分:0)

在找到重复项之前,您可以先使用year == 2003提取行的子集。
另外,在计算总和之前,您需要对结果求逆,因为duplicated会将重复出现的事件标记为True,而您需要将唯一出现的事件求和。
试试这个:
(~(df[df.year==2003].duplicated(subset=['Pos'], keep=False))).sum()