У меня есть список слов, которые нужно удалить:
words_list_to_remove = ['abc', 'def', 'ghi', 'jkl']
Я хочу удалить эти слова из строки Series (df
):
Моя цель new_df
:
Я хочу сохранить каждый элемент в виде строки, а также сохранить индекс каждого элемента. Я пытался преобразовать их обоих в set
, но у меня это не сработало.
Любая помощь будет признательна!
Вы можете использовать .isin() и передать ему свой words_list_to_remove
:
import pandas as pd
# Define Pandas Series that holds your data
df = pd.Series(["first","abc","second","third","def","forth","ghi","jkl"])
print("before dropping:\n", df)
# Define list of strings to drop
words_list_to_remove = ['abc', 'def', 'ghi', 'jkl']
# Only keep rows that are not in list
df = df[~df.isin(words_list_to_remove)]
print("\nafter dropping:\n", df)
Как вы можете видеть в выводе, индекс также сохраняется:
before dropping:
0 first
1 abc
2 second
3 third
4 def
5 forth
6 ghi
7 jkl
dtype: object
after dropping:
0 first
2 second
3 third
5 forth
dtype: object
Примечание: обычно вы называете DataFrame как df
, было бы лучше переименовать вашу серию во что-то другое, чтобы избежать путаницы.
df[~df['My_strings'].isin(words_list_to_remove)]
. Ссылка: pd.Series.isin , логическое индексирование панд