根据出现在另一列中的值清除列

Clear column based on a value appearing in another column

我觉得这应该很简单,但我一直卡在这个上面。

我的数据框如下所示:

Name    Date    Graduated    Really?

Bob     2014      Yes   
Bob     2020                   Yes
Sally   1995      Yes
Sally   1999
Sally   1999                   No
Robert  2005                   Yes
Robert  2005      Yes

我按 NameDate 分组。在每组中,如果 Graduated 中出现“是”,则清除 Really? 列。如果组中没有出现“是”,则保持原样离开。输出应如下所示:

Name    Date    Graduated    Really?

Bob     2014      Yes   
Bob     2020                   Yes         
Sally   1995      Yes
Sally   1999 
Sally   1999                   No             
Robert  2005                  
Robert  2005      Yes

在执行 df.loc[mask, "Really?"] = None 之前,我一直在尝试 mask = df.groupby(['Name','Date'])['Graduated'].isin('Yes') 的不同变体,但收到 AttributeError(我假设我的语法不正确)。

已编辑预期输出。

试试这个:

s = df['Graduated'].eq('Yes').groupby([df['Name'],df['Date']]).transform('any')
df['Really?'] = df['Really?'].mask(s,'')