Попытка нам str.contains и логическая маска, но только для одного значения в Pandas

1

У меня возникли проблемы с хорошим решением для выделения строк с тем же уникальным идентификатором, который содержит только экземпляры определенного значения, а при удалении всех строк с общим уникальным идентификатором, если они содержат любые другие значения. (извините, если это не ясно, но у меня есть пример 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
Теги:
pandas

1 ответ

3
Лучший ответ

Вы можете использовать это:

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
  • 0
    Ах, хорошо знать !!
  • 0
    Это сработало отлично! Спасибо вам большое!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню