Количество iems в массиве, содержащем часть строки - PullRequest
1 голос
/ 12 марта 2020

рассмотреть

df['something'].unique()

Это генерирует уникальные предметы в переменной что-то. Давайте рассмотрим его как массив уникальных элементов.

array(['aabb','aacc','aadd','bbcc']).

Теперь я хочу проверить, как любые элементы в этом массиве начинаются с 'aa'.

Ответы [ 3 ]

3 голосов
/ 12 марта 2020

Pandas решение с Series.str.startswith с sum для подсчета True с:

print (pd.Series(df['something'].unique()).str.startswith('aa').sum())
3

Альтернатива Series.drop_duplicates - затем Series конструктор не нужен:

print (df['something'].drop_duplicates().str.startswith('aa').sum())
3

Или чистое python решение - генератор с sum и startswith для подсчета True с:

print (sum(x.startswith('aa') for x in df['something'].unique()))
3
2 голосов
/ 12 марта 2020

Вы можете использовать модуль re, чтобы найти любые шаблоны (не только 'aa')

Например: если у вас есть следующий массив arr = ['aabb','aacc','aadd','bbcc'], вы можете найти количество элементов, которые начинаются с 'aa' с этой строкой кода:

len([word for word in arr if re.match(r'aa', word)])

Это даст вам вывод 3, тогда как эта строка

len([word for word in arr if re.match(r'bb', word)])

покажет 1

1 голос
/ 12 марта 2020

Вы можете использовать функцию startswith(). Следовательно, код будет:

number_of_aa = len([x for x in df['something'].unique() if x.startswith('aa')])

. С помощью этого метода вы получите отфильтрованный список со значениями, которые начинаются с aa, а затем с помощью len вы получите счет. Если вы не хотите sh сохранить значения, вы можете просто использовать True / False и затем суммировать значения:

number_of_aa = [True for x in df['something'].unique() if x.startswith('aa')].sum()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...