df['sport'] = df.sport.str.replace(r'(^.*ball.*$)', 'ball sport') df
df.sport = df.sport.apply(lambda x: 'ball sport' if 'ball' in x else x)
In [71]: df.loc[df['sport'].str.contains('ball'), 'sport'] = 'ball sport' df Out[71]: name sport 0 Bob tennis 1 Jane ball sport 2 Alice ball sport
df.sport.str.replace(r'(^.*ball.*$)', 'ball sport') 0 tennis 1 ball sport 2 ball sport Name: sport, dtype: object