train_test_split ValueError: Input contains NaN
Check to see if you have any null or nan values:

X[X.isnull() == True]


Then you have to decide what to do with those nan values. Something that is commonly done is to forward fill in place. 

X.fillna(method = 'ffill', inplace = True)
y.fillna(method = 'ffill', inplace = True)