答案 0 :(得分:1)
IIUC:
通过 groupby()
和 filter()
尝试:
idx=df.groupby('A')['D'].filter(lambda x:x.eq('no').any()).index
df.loc[idx,'C']='no'
或
通过 groupby()
和 transfrom()
和 fillna()
尝试:
df['C']=(df.groupby('A')['D'].transform(lambda x:'no' if x.eq('no').any() else float('NaN'))
.fillna(df['C']))
答案 1 :(得分:0)
df['C']=np.where(df['D'].eq('-'), 'yes','no)
或
简单
df['C']=df['D'].eq('-')