Filter row depending on specific object value and delete those instances
You can replace ? with nan and use dropna(). This will work if you don't already have rows with nan entries that you want to keep.

train = train.replace('?', np.nan).dropna()


Another option is to filter rows where any value is ?. 

train = train[~(train == '?').any(axis=1)]


Update:

After looking at your data I found the problem: Your csv file has spaces after the commas, so the rows containing ? have a leading space.

If you use train = pd.read_csv('adult.data', sep=', ', engine='python') to read your data then either of the above methods will work.