У меня возникли проблемы с хорошим решением для выделения строк с тем же уникальным идентификатором, который содержит только экземпляры определенного значения, а при удалении всех строк с общим уникальным идентификатором, если они содержат любые другие значения. (извините, если это не ясно, но у меня есть пример df ниже)
Это логика, которая у меня есть для str.contains и boolean mask, и я думаю использовать что-то подобное...
df [df ['ID']. isin (df.loc [df1.Yurrr.str.contains('Bodega'), 'ID']. unique())]
Пример df:
ID % Yurrr
abc123 0.833 Bodega
abc123 0.87 Bodega
abc123 0.867 Bodega
abc123 0.812 Bodega
lmn789 0.837 Beck's
lmn789 0.856 Chopped Cheese
lmn789 0.813 Bodega
lmn789 0.812 Beck's
xyz456 0.111 Cardi B
xyz456 0.222 Cardi B
xyz456 0.333 Bodega
xyz456 0.444 Bodega
Выход df:
ID % Yurrr
abc123 0.833 Bodega
abc123 0.87 Bodega
abc123 0.867 Bodega
abc123 0.812 Bodega
Вы можете использовать это:
df[df.groupby('ID')['Yurrr'].transform(lambda x: x.str.contains('Bodega').all())]
ИЛИ ЖЕ
df[df.Yurrr.str.contains('Bodega').groupby(df['ID']).transform(all)]
Выход:
ID % Yurrr
0 abc123 0.833 Bodega
1 abc123 0.870 Bodega
2 abc123 0.867 Bodega
3 abc123 0.812 Bodega