Как найти строки с * во фрейме данных pandas, используя re - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь найти строку с *A* во фрейме данных

df = pd.DataFrame({
    "col_1":["AAA","BBB","CCC"],
    "col_2":[4,5,6],
    "col_3":[107,800,300],
    "col_4":[1,3,5]
})

#0  1   2   3
#0  AAA 4   107 1
#1  BBB 5   800 3
#2  CCC 6   300 5 

В этой строке выдается ошибка:

df['col_1'].str.match("*A*")

Не работает, и я получаюошибка:

line 615, in _parse
source.tell() - here + len(this))
sre_constants.error: nothing to repeat at position 0

У меня также есть следующий код

import pandas as pd
df = pd.DataFrame({
  "col_1":["AAA","BBB","CCC"],
  "col_2":[4,5,6],
  "col_3":[107,800,300],
  "col_4":[1,3,5]
 })

 def findItems(df, findText, colName):
    mask = df[colName].astype('str').str.match(findText) 
    print("\n mask",mask)

 The above code is also not working

1 Ответ

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

Вот несколько примеров для вас, которые должны ответить на ваш вопрос.

Я думаю, что вы, возможно, ищете: str.match(".+A.+"), что будет означать любые символы, за которыми следует A, за которыми следует любой символ (s), т. е. если str.contains('A') вам не поможет.

Кредит также всем комментаторам.

import pandas as pd

# Let us create a serie as df['col'] is actually a serie.
s = pd.Series(['A','AA','AAA','aaa'])

print(s.str.contains('A').values)             # [ True  True  True False]
print(s.str.lower().str.contains('a').values) # [ True  True  True  True]
print(s.str.match(".*A.*").values)            # [ True  True  True False]
print(s.str.match(".+A.+").values)            # [False False  True False]
print(s.str.match(".+[Aa].+").values)         # [False False  True  True]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...