我有一个数据框df
,其中有一列具有不同的学校名称,school_name
。我想删除某些单词,想知道这样做的最佳方法是什么。
例如,我想从以下字符串中删除‘male’
和‘female’
:
‘gps hafiz shahmale p’
‘gpps mogal malep’
‘government primary school chak femalep’
‘govt girls high school syebadadfemale p’
‘ghs male p’
…
除了‘male’
或‘female’
之外,还有许多其他我想删除的字符串具有相似的复杂性,例如:
我还想从以下字符串中删除‘sbcombined’
:
'government girls high school chak no120sbcombinedp',
'govt boys elementary school chak no119sbcombined t',
'govt boys elementary school chak no 37 sbcombined p'
…
我现在唯一想到的就是为每个单词编写单独的函数,例如删除‘male’
:
l = df.school_name.tolist()
for i in l:
if (i[-4:]=='male') or (i[-5:-1]=='male' and i[-7:-5]!='fe'):
i2 = i.replace('male', '')
df.loc[df.school_name==i, school_name] = i2
是否有更好,更有效的方法来解决此问题?
edit:我还想知道如何处理字符串“ male”所涉及的复杂性-“ male”是字符串“ female”(我也想删除)的一部分,使用re.search删除单词“ male”,对于包含单词“ female”的字符串,删除“ female”一词中的“ male”部分,仅留下“ fe”;我想避免的事情。
答案 0 :(得分:1)
pattern = '|'.join(['male','female'])
df['school_name'] = df.school_name.str.replace(pattern, '')
它将用''
空字符串替换列表中的所有单词。
答案 1 :(得分:0)
如果您可以在列表replace_word_list
中指定要删除的单词,请尝试以下操作:
for word in replace_word_list:
df['school_name'] = df['school_name'].str.replace(word, '')