У меня есть Pandas DataFrame df
со многими столбцами, один из которых:
col
---
abc:kk__LL-z12-1234-5678-kk__z
def:kk_A_LL-z12-1234-5678-kk_ss_z
abc:kk_AAA_LL-z12-5678-5678-keek_st_z
abc:kk_AA_LL-xx-xxs-4rt-z12-2345-5678-ek__x
...
Я пытаюсь получить все записи, где col
начинается с abc:
и имеет сначала -num-
между '1234'
и '2345'
(включительно с использованием поиска по строке; части -num-
составляют ровно 4 цифры каждая).
В приведенном выше случае я бы вернул
col
---
abc:kk__LL-z12-1234-5678-kk__z
abc:kk_AA_LL-z12-2345-5678-ek__x
...
Мое текущее (работающее, я думаю) решение выглядит так:
df = df[df['col'].str.startswith('abc:')]
df = df[df['col'].str.extract('.*-(\d+)-(\d+)-.*')[0].ge('1234')]
df = df[df['col'].str.extract('.*-(\d+)-(\d+)-.*')[0].le('2345')]
Что является более идиоматическим c и эффективный способ сделать это в Pandas?