Удалить строки из информационного кадра, учитывая, что подстрока присутствует в определенной строке столбца.

ДФ:

Parent  Child   score
1stqw   Whoert      0.305125
tWowe   Tasert      0.308132
Worert  Picert      0.315145

Подстроки = [Wor, Tas]

Удалить строки, имеющие подстроки.

Обновлено df:

 Parent Child   score
1stqw   Whoert      0.305125

Благодарность!!

2
vijay athithya 23 Окт 2018 в 11:55

2 ответа

Лучший ответ

Вы можете объединить, а затем использовать {{ X0 } } :

L = ['Wor', 'Tas']

df = df[~(df['Parent'] + df['Child']).str.contains('|'.join(L))]

print(df)

  Parent   Child     score
0  1stqw  Whoert  0.305125

Информацию об эффективности / производительности см. В разделе Фильтрация Pandas для нескольких последовательных подстрок.

3
jpp 23 Окт 2018 в 09:05

Используйте str.contains с apply в подмножестве of DataFrame, а затем добавьте {{X3 }} для проверки хотя бы одного True в строке:

cols = ['Parent', 'Child']
mask = df[cols].apply(lambda x: x.str.contains('|'.join(substrings))).any(axis=1)

Или объедините в цепочку логические маски | (побитовое ИЛИ):

mask = (df['Parent'].str.contains('|'.join(substrings)) | 
        df['Child'].str.contains('|'.join(substrings)))

df = df[~mask]
print (df)
  Parent   Child     score
0  1stqw  Whoert  0.305125
2
jezrael 23 Окт 2018 в 09:00
52944994