Как очистить строку dataframe в Python - PullRequest
0 голосов
/ 19 сентября 2019

У меня в строке данных есть строка:

names
------
*OP Under A Blood Red Moon
125-201 1006
Apple
Orange
/
1-2-3

Я хочу очистить ее и просто

names
------
Apple
Orange

Я хочу удалить *OP Under A Blood Red Moon, так как в ней более трех слов.

удалить 125-201 1006 и 1-2-3, так как они имеют только цифры и символы.

удалить /, так как он содержит менее одного символа.

Я немного знаком с тем, как сделать кое-что из этого в python для строки, но как мне сделать это для всей строки в pandas dataframe.

1 Ответ

1 голос
/ 19 сентября 2019

Вместо того, чтобы удалять строки, мы фильтруем их и сохраняем все строки, которые:

  • содержат не более 3 слов (т. Е. Не более 2 пробелов) AND
  • содержит как минимум один буквенный символ AND
  • длиннее 1 символа

со следующим логическим индексированием:

def num_alpha(s):
    return len([c for c in s if c.isalpha()])

df[(df.names.str.count(' ') < 3) & (df.names.apply(num_alpha) > 0) & (df.names.str.len() > 1)]

Это условие, особенно первое, конечно, еще можно улучшить, но я думаю, вы поняли идею.

Обратите внимание, что скобки необходимы при выполнении поэлементных логических операций в пандах, см. логическое индексирование .

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