Pandas: проверьте, содержит ли строка несколько подстрок


Вы можете использовать следующие методы, чтобы проверить, содержит ли строка в DataFrame pandas несколько подстрок:

Способ 1. Проверьте, содержит ли строка одну из нескольких подстрок.

 df[' string_column ']. str . contains (' | ' .join ([' string1 ',' string2 ']))

Способ 2: проверьте, содержит ли строка несколько подстрок

 df[' string_column ']. str . contains ( r'^(?=.*string1)(?=.*string2)' )

В следующих примерах показано, как использовать каждый метод на практике со следующим DataFrame pandas:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['Good East Team', 'Good West Team', 'Great East Team',
                             'Great West Team', 'Bad East Team', 'Bad West Team'],
                   ' points ': [93, 99, 105, 110, 85, 88]})

#view DataFrame
print (df)

              team points
0 Good East Team 93
1 Good West Team 99
2 Great East Team 105
3 Great West Team 110
4 Bad East Team 85
5 Bad West Team 88

Пример 1. Проверьте, содержит ли строка одну из нескольких подстрок.

Мы можем использовать следующий синтаксис, чтобы проверить, содержит ли каждая строка в столбце команды подстроку «Хорошо» или «Есть»:

 #create new column that checks if each team name contains 'Good' or 'East'
df[' good_or_east '] = df[' team ']. str . contains (' | ' .join ([' Good ',' East ']))

#view updated DataFrame
print (df)

              team points good_or_east
0 Good East Team 93 True
1 Good West Team 99 True
2 Great East Team 105 True
3 Great West Team 110 False
4 Bad East Team 85 True
5 Bad West Team 88 False

Новый столбец Good_or_east возвращает следующие значения:

  • Истинно , если в команде есть «Хорошо» или «Есть».
  • Ложь , если команда не содержит ни «Хорошо», ни «Есть».

Примечание : | Оператор означает «или» в пандах.

Пример 2. Проверьте, содержит ли строка несколько подстрок.

Мы можем использовать следующий синтаксис, чтобы проверить, содержит ли каждая строка в столбце команды подстроку «Хорошо» и «Есть»:

 #create new column that checks if each team name contains 'Good' and 'East'
df[' good_and_east '] = df[' team ']. str . contains ( r'^(?=.*Good)(?=.*East)' )

#view updated DataFrame
print (df)

              team points good_and_east
0 Good East Team 93 True
1 Good West Team 99 False
2 Great East Team 105 False
3 Great West Team 110 False
4 Bad East Team 85 False
5 Bad West Team 88 False

Новый столбец Good_and_east возвращает следующие значения:

  • Верно , если в команде есть «Хорошо» и «Есть».
  • Ложь , если команда не содержит «Хорошо» и «Есть»

Обратите внимание, что возвращается только одно значение True , поскольку существует только одно название команды, содержащее подстроку «Good» и подстроку «Восток».

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в pandas:

Pandas: добавьте столбец из одного DataFrame в другой
Pandas: получите строки, которых нет в другом DataFrame
Pandas: как проверить, равны ли несколько столбцов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *