假设我有一个包含员工ID、合同号和工作公司的 Dataframe ,每个员工可以在同一家公司甚至不同的公司拥有任意多份合同:
ID Contract Number Company
10000 1 Abc
10000 2 Zxc
10000 3 Abc
10001 1 Zxc
10002 2 Abc
10002 1 Cde
10002 3 Zxc
我需要找到一种方法来标识每个ID的合同编号“1”的公司,然后创建一列“Primary Contract”,如果该合同与合同编号1的公司属于同一公司,则该列将设置为“Yes”,从而产生以下 Dataframe :
ID Contract Number Company Primary Compay
10000 1 Abc Yes
10000 2 Zxc No
10000 3 Abc Yes
10001 1 Zxc Yes
10002 2 Abc No
10002 1 Cde Yes
10002 3 Zxc No
实现这一目标的最佳途径是什么?
2条答案
按热度按时间gg58donl1#
您可以将
groupby.apply
与isin
和numpy.where
一起使用:输出:
如果您可以使用布尔值(
True
/False
)代替'Yes'
/'No'
:g6ll5ycj2#
筛选
Contract Number
为1
的行,在DataFrame.merge
中使用左连接,并比较indicator=True
参数生成的_merge
列:另一个想法是将
MultiIndex
与Index.isin
进行比较: