Q:

How to clean up dataframe row in Python

I have a row in dataframe as
names
------
*OP Under A Blood Red Moon
125-201 1006
Apple
Orange
/
1-2-3

I wanna clean it up and just have
names
------
Apple
Orange

I wanna remove
*OP Under A Blood Red Moon as it has more than three words.
remove 125-201 1006 and 1-2-3 as they only have numbers and symbol.
remove / as it is less than one character. 
I'm kinda familiar with how to do some of this in python for a string but how do I do this for an entire row in pandas dataframe. 

A:

Rather than removing rows we filter them and retain any rows that:

have no more than 3 words (i.e. no more than 2 separating spaces)  AND
contain minimum one alpha character  AND
are longer than 1 character

with the following boolean indexing:
def num_alpha(s):
    return len([c for c in s if c.isalpha()])

df[(df.names.str.count(' ') < 3) & (df.names.apply(num_alpha) > 0) & (df.names.str.len() > 1)]

This conditions, especially the first one, can certainly still be refined but I think you get the idea.  
Please note that the parentheses are necessary when doing element-wise logical operations in pandas, see boolean indexing. 

