Используйте регулярные выражения для фильтрации строк панд с ~ в начале и в конце строки - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь использовать регулярные выражения в пандах для фильтрации строк, где есть ~ в начале строки И в конце строки для данного столбца. Например, возьмите следующие панды Dataframe:

import pandas as pd
df = pd.DataFrame({'line': [1, 2, 3, 4, 5, 6, 7, 8, 9],
                   'Unit': ['LF', 'LS~', '~~SF', 'CY', '~SF~', 'PC', '~~', '~LF', '~PC~']})

Вот что я хочу для вывода:

df[df.Unit.str.contains(MY_EXPRESSION, regex=True)]
   line Unit
0     1   LF
1     2   LS~
2     3   ~~SF
3     4   CY
5     6   PC
7     8   ~LF

Что я пробовал до сих пор:

  1. MY_EXPRESSION = '^ [^ ~]. * [^ ~] $'

Это фильтрует что-либо с ~ в начале ИЛИ конца строки. Я хочу отфильтровать только строки с ~ в начале И конце строки.

  1. MY_EXPRESSION = '^ ([^ ~]) (. *) ([^ ~]) $'

Это также отфильтровывает строки с ~ в начале ИЛИ конца строки. Опять же, я хочу отфильтровать только строки с ~ в начале и конце строки.

Какое регулярное выражение мне нужно (например, MY_EXPRESSION в примере), чтобы отфильтровать Dataframe желаемым способом?

Я пользуюсь пандами v.0.23.4.

1 Ответ

0 голосов
/ 11 сентября 2018

Использование pandas.Series.str.match

df[~df.Unit.str.match('^~.*~$')]

   Unit  line
0    LF     1
1   LS~     2
2  ~~SF     3
3    CY     4
5    PC     6
7   ~LF     8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...