如何删除熊猫数据框中的某些字符串

时间:2020-08-18 08:23:56

标签: python pandas dataframe

我有一个数据框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”;我想避免的事情。

2 个答案:

答案 0 :(得分:1)

使用str.replace

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, '')