如何解决给定另一列值,计算一列的一次出现值
所以,我有这种数据集: 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,但是我不确定语法是否正确。有任何想法吗?预先感谢
解决方法
在找到重复项之前,您可以先使用year == 2003
提取行的子集。
另外,在计算总和之前,您需要对结果求逆,因为duplicated
会将重复出现的事件标记为True,而您需要将唯一出现的事件求和。
试试这个:(~(df[df.year==2003].duplicated(subset=['Pos'],keep=False))).sum()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。