#python #pandas #dataframe
#питон #панды #фрейм данных
Вопрос:
Чтобы отфильтровать столбец фрейма данных только с пробелами, пример:
входной фрейм данных:
|col_name | col_desc | |
|---------|-----------|-----------------------------------------|
|A | | has a single space character i.e. ' '|
|B | | has 2 consecutive space character i.e. ' '|
|C | text | starts with space followed by 'text' i.e ' text'|
|D | | has multiple spaces|
выходной сигнал:
|col_name | col_desc | |
|---------|-----------|-----------------------------------------|
|A | | has a single space character i.e. ' '|
|B | | has 2 consecutive space character i.e. ' '|
|D | | has multiple spaces|
Ответ №1:
Одним из способов было бы заменить все пробелы ничем. Если ничего не осталось, то это то, что вы хотите:
df[df['col_desc'].str.replace(' ', '') == '']
Вы также можете использовать s
или s
для достижения этой цели. Использование s
может быть наиболее эффективным, поскольку менее полная замена с момента захвата последовательного пространства и замены всего сразу:
df[df['col_desc'].str.replace('s ', '') == '']
Комментарии:
1. Спасибо, Дэвид, мое требование — ничего не заменять, а отфильтровывать данные как есть с помощью null, empty или пробелов. Null и empty было легко, но нужно решение для пространства
2. @RanjanaJha, вы ничего не заменяете, вы фильтруете по новой серии с заменой значений . Имеет ли это смысл? Что касается null или Empty, это не было частью вашего вопроса.
Ответ №2:
Вы можете использовать метод string isspace
:
df[df.col_desc.str.isspace()]
Обратите внимание, что он не будет хранить пустые строки. Из документов:
str.isspace()
Возвращает True, если в строке есть только пробельные символы и есть хотя бы один символ, в противном случае False .