You can use str.replace and regex. The pattern \b\w\b will replace any single word character with a word boundary. See working example below:
Example using series:
s = pd.Series(['Katherine','Katherine and Bob','Katherine I','Katherine', 'Robert', 'Anne', 'Fred', 'Susan', 'other'])
s.str.replace(r'\b\w\b','').str.replace(r'\s+', ' ')
0 Katherine
1 Katherine and Bob
2 Katherine
3 Katherine
4 Robert
5 Anne
6 Fred
7 Susan
8 other
dtype: object
Another example with your test data:
s = pd.Series(['ABCD','X','WYZ'])
0 ABCD
1 X
2 WYZ
dtype: object
s.str.replace(r'\b\w\b','').str.replace(r'\s+', ' ')
0 ABCD
1
2 WYZ
dtype: object
With your data it is:
df['STRI'].str.replace(r'\b\w\b','').str.replace(r'\s+', ' ')
df['STRI'].map(lambda x: ' '.join(word for word in x.split() if len(word)>1))Although probably there are better ways of doing this.