Как проверить записи в столбце для шаблонов и рассчитать количество шаблонов? - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть DataFrame:

         Name         Price
0        Dictionary     3
1        Book           4
2        Dict En-Ru     2
3        BookforKids    6
4        Dict FR-CHN    1

Мне нужен фрагмент кода, который проверит столбец «Имя» на наличие шаблонов, которые я могу указать сам, и посчитает количество найденных шаблонов в другом DataFrame.

Например, проверьте количество записей в столбце «Имя» с шаблонами Dict a Book, игнорирующими регистр, которые должны дать такой результат:

|  Pattern    | Occurencies |
| ----------- | ----------- |
| Dict        | 3           |
| Book        | 2           |

Ответы [ 2 ]

2 голосов
/ 13 апреля 2020

Вот один способ, используя str.extract:

patterns = ['Dict','Book']
df.Name.str.extract(rf"({'|'.join(patterns)})", expand=False).value_counts()

Dict    3
Book    2
Name: 0, dtype: int64

Вы можете сделать это без учета регистра с аргументом flags:

patterns_lower = '|'.join([s.lower() for s in patterns])
(df.Name.str.lower().str.extract(rf"({patterns_lower})", expand=False)
        .value_counts())
0 голосов
/ 13 апреля 2020

Вы можете определить свой шаблон как пользовательскую функцию:

# example
def get_pattern(txt):
   if 'Dict' in txt:
       return 'Dict'
   if 'Book' in txt:
       return 'Book'

   return np.nan

Затем вы применяете данные в своем фрейме данных и используете счетчики значений:

df['Pattern'] = df['Name'].apply(get_pattern)
df['Pattern'].value_counts()

Dict    3
Book    2
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...