Вы можете использовать pd.Series.str.contains
, чтобы создать маску , которую вы затем можете проиндексировать для замены.
Индексирование со значениями NaN не будет работать, поэтому вы можете сначала заменить значения NaN в столбце на ''
в качестве значения NULL, чтобы столбец представлял собой строку. Таким образом, str.contains
будет генерировать только логические значения, которые можно использовать с индексированием.
df['subject'] = df['subject'].fillna('')
is_match = df['subject'].str.contains(pattern, regex=True)
df['subject'][is_match] = ''
Альтернативный подход состоит в том, чтобы не заполнять значения NaN в кадре данных, а вместо этого изменять значения NaN маски либо на False
или True
в зависимости от того, хотите ли вы оставить NaN или заменить его пустой строкой соответственно.
is_match = df['subject'].str.contains(pattern, regex=True)
df['subject'][is_match.fillna(True or False)] = ''
Независимо от подхода, чтобы сохранить очищенные данные, просто используйте метод to_csv
.
df.to_csv('filename.csv')