Для pandas
И dask
попробуйте ...
df1 = df.groupby('Unique Group')['Name'].apply(list).reset_index()
df2 = df.merge(df1, how='left', on='Unique Group', suffixes=('', '_y'))
df2['Temp'] = True
df2['CONDITION'] = df2['Temp'][df2['Name_y'].apply(lambda x: 'A' in x and 'B' in x)]
df2['CONDITION'] = df2['CONDITION'].fillna(False)
df2 = df2.drop(['Temp', 'Name_y'], axis=1)
Насколько мне известно, вы не можете использовать .transform
и np.where()
с Dask
... отсюда и дополнительные код ...
Всего за pandas ... попробуйте с .tranform
, .join
, str.split
и, наконец, np.where
df['CONDITION'] = df.groupby('Unique Group')['Name'].transform(lambda x: ','.join(x)).str.split(',')
df['CONDITION'] = np.where((df['CONDITION'].apply(lambda x: 'A' in x and 'B' in x)), True, False)
ОБНОВЛЕНИЕ: Чтобы задать ответ на комментарий ... не уверен, что происходит со ВСЕМИ вашими данными, но из предоставленных образцов данных это сработало, но я получил предупреждающее сообщение ... чтобы быть в безопасности, вы должны указать типы данных для столбцов с meta=('ID':'int64','Unique Group':'int64', 'Name':'object','Condition':'bool')
или любые другие типы данных.