如果 B 列包含某些内容,则 A 列的整行都是某些内容

时间:2021-07-08 04:06:14

标签: python pandas dataframe

enter image description here

嗨,当D列包含'no'时,那么C列的所有行都是'no'。

如果所有行的 D 列都是“-”,则保留;什么都不做(所以 C 列会,不,是,是)。

所需的输出:

enter image description here

2 个答案:

答案 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('-')