Option 1
Use regex in your replacement
df.replace('^.*Dividend.*$', np.nan, regex=True)
From the comments
( regex=True) , . . '^' , . '^.*' . '$' . '.*$' . , '^.*Dividend.*$' , 'Dividend' - , . np.nan
df
df = pd.DataFrame([[1, '2 Dividend'], [3, 4], [5, '6 Dividend']])
df
0 1
0 1 2 Dividend
1 3 4
2 5 6 Dividend
0 1
0 1 NaN
1 3 4.0
2 5 NaN
2
pd.DataFrame.mask applymap.
lambda applymap, , 'Dividend'.
df.mask(df.applymap(lambda s: 'Dividend' in s if isinstance(s, str) else False))
0 1
0 1 NaN
1 3 4
2 5 NaN
3
, stack/unstack + pd.Series.str.contains
df.mask(df.stack().astype(str).str.contains('Dividend').unstack())
0 1
0 1 NaN
1 3 4
2 5 NaN