Удалите все строки со специальным символом в пандах - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть фрейм данных, в котором есть специальные символы (например, квадрат) в одном из столбцов EPI_ID.Я хочу удалить все строки, которые содержат этот специальный символ.Это не стандартный символ, и я не нашел подобных проблем в кадре данных, в основном в виде строк.Тем не менее, у меня возникают проблемы с определением этих столбцов.Любые предложения?

df

EPI_ID    stuff
2342F     randoM_words
FER43     predictive_words
u'\u25A1' blank

Моя попытка:

df[~df['EPI_ID'].apply(lambda x: x.encode('ascii') == True)]

Мои результаты выдают False для каждой строки.

Ожидаемый результат:

EPI_ID    stuff
2342F     randoM_words
FER43     predictive_words

Редактировать: квадрат не появляется в макете df.Но это то, что это квадрат

1 Ответ

0 голосов
/ 01 февраля 2019

Предполагая, что ваш DataFrame выглядит примерно так:

>>> df = pd.DataFrame({'EPI_ID': ['2343F', 'FER43', 'DF' + u'\u25A1' + '123', 'PQRX74'], 'STUFF': ['abc', 'def', 'ghi', 'jkl']})

>>> df

   EPI_ID STUFF
0   2343F   abc
1   FER43   def
2  DF□123   ghi
3  PQRX74   jkl

Вы можете использовать str.contains, который обрабатывает регулярное выражение:

df.loc[df['EPI_ID'].str.contains(r'[^\x00-\x7F]+') == False]

   EPI_ID STUFF
0   2343F   abc
1   FER43   def
3  PQRX74   jkl

Regex любезноиз этого ответа: (grep) Regex для сопоставления не-ASCII символов?

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