удалить строку Pandas df с помощью маски на основе последней буквы столбца строки

1

Например, в рамке данных pandas ниже с 3 строками, все из которых являются строками. Я хочу отказаться от условия, if str[-1] == '-':

df = pd.DataFrame({'a': ["123-","123-1","123-2"]})

Но если я это сделаю

df[df['a'][-1]=='-']

Он вернет ошибку. Я знаю, что это можно сделать с помощью функции df.apply. Но мне просто интересно, можно ли это сделать с помощью маски.

Теги:
pandas
mask

1 ответ

2
Лучший ответ

Вы можете создать маску, используя регулярное выражение, как показано ниже. Знак доллара гарантирует, что дефис будет согласован только в конце строки.

df.a.str.contains('-$')

Это вернет булевскую серию. Используя ваш пример:

0     True
1    False
2    False

Затем вы можете отбросить строки, как обычно, с помощью df.drop():

df.drop(df[df.a.str.contains('-$')].index, inplace=True)

И сбросьте индекс, если хотите:

df.reset_index(inplace=True, drop=True)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню