Удалить строки в pandas, если они содержат «???» - PullRequest
1 голос
/ 04 апреля 2020

Я пытаюсь отбросить строки в pandas, который содержит «???», он работает для всех остальных значений, кроме «???», я не знаю, в чем проблема.

Это мой код (я пробовал оба типа):

df = df[~df["text"].str.contains("?????", na=False)]
df = df[~df["text"].str.contains("?????")]

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

re.error: nothing to repeat at position 0

Это работает для любого другого значения, кроме «????». Я прогуглил его и просмотрел весь сайт, но не смог найти решения.

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Параметр ожидает регулярное выражение, следовательно, ошибка re.error. Вы можете сбежать? внутри выражения, подобного этому:

df = df[~df["text"].str.contains("\?\?\?\?\?")]

Или установите regex=False в качестве предложенного Vorsprung:

df = df[~df["text"].str.contains("?????",regex=False)]
0 голосов
/ 04 апреля 2020

давайте преобразуем это в работающий код:

import numpy as np
import pandas as pd

data = {'A': ['abc', 'cxx???xx', '???',], 'B': ['add', 'ddb', 'c', ]}
df = pd.DataFrame.from_dict(data)
df

вывод:

    A   B
0   abc add
1   cxx???xx    ddb
2   ??? c

с этим:

df[df['A'].str.contains('???',regex=False)]

вывод:

    A   B
1   cxx???xx    ddb
2   ??? c

Вы должны указать contains(), что строка поиска не является регулярным выражением.

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