2016-04-06 3 views
1

Я хочу удалить все формы (нижний регистр/верхний регистр, короткие формы) фразы 'Thank you'/'thank u'/'thanks!'... ect в моей функции замены панды.pandas add in regex in replace function

В настоящее время я просто делаю жесткие сопоставления, которые работают, но есть ли более эффективный способ сделать это?

df.text_col.replace(to_replace='Thank you',value='',inplace=True,regex=True) 
df.text_col.replace(to_replace='thank you',value='',inplace=True,regex=True) 
df.text_col.replace(to_replace='th(.+)u',value='',inplace=True,regex=True) 
            . 
            . 
+0

Is есть способ установить модификатор 'i' для нечувствительности к регистру? – Laurel

+0

не в документации pandas: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.replace.html – jxn

+1

@jxn Дайте нам жесткий список того, что вы считаете «короткой формой» ', иначе это будет очень сложно. –

ответ

0

Я хотел бы предложить перечислить все случаи thank you вы хотите избавиться от:

thanks_to_delete = '|'.join(['thanks', 'thank you']) 

, а затем с помощью следующого Однострочника для случая нечувствительных замен:

df.text_col.str.replace(thanks_to_delete, '', case=False) 

Испытание:

df=pd.DataFrame({ 
    'text_col': ['Thank you very much for your patience', 
        'I would just want to thank you for your patience', 
        'Thanks for your patience'] 
       }) 

df.text_col.str.replace(thanks_to_delete, '', case=False) 
0    very much for your patience 
1 I would just want to for your patience 
2       for your patience 
Name: text_col, dtype: object