【发布时间】:2020-12-20 04:34:55
【问题描述】:
所以,我有这样的数据集: 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 个,因为 pos 'Assistant' 由 2 个人持有)
通过运行
(df.duplicated(subset=['Pos'], keep=False)).sum()
我在不考虑“year”列的情况下获得了单次出现的计数
我试过了
(df.duplicated(subset=['Pos', 'year'], keep=False)).sum()
然后它计算pos 和years 的单次出现。 (总共 6 个:4 个用于所有年份仅由一个人担任的职位,加上 2 个用于在“年份”中不重复的行)
我相信我需要使用 df.groupby,但我不确定语法。有任何想法吗?提前致谢
【问题讨论】:
-
使用
df.loc[df["year"].eq(2003),"Pos"].drop_duplicates(keep=False).nunique()。
标签: python pandas count duplicates dataset