Использовать list comprehension
с фильтрацией, здесь не нужно регулярное выражение:
df = pd.DataFrame({'contain':[['name', 'Place', 'ect@gtr', 'nick'],
['gf@e', 'nobel', 'play', 'hi']]})
print (df)
contain
0 [name, Place, ect@gtr, nick]
1 [gf@e, nobel, play, hi]
df.contain = df.contain.apply(lambda x: [y for y in x if '@' not in y])
Или:
df.contain = [[y for y in x if '@' not in y] for x in df.contain]
print (df)
contain
0 [name, Place, nick]
1 [nobel, play, hi]
РЕДАКТИРОВАТЬ: Для удаления значений в строках добавьте split
с join
:
df = pd.DataFrame({'contain':['name Place ect@gtr nick',"gf@e nobel play hi"]})
print (df)
contain
0 name Place ect@gtr nick
1 gf@e nobel play hi
df.contain = df.contain.apply(lambda x: ' '.join([y for y in x.split() if '@' not in y]))
print (df)
contain
0 name Place nick
1 nobel play hi