ValueError: Found input variables with inconsistent numbers of samples [43,19]
The line that gives the error is:

pls.fit(X_train, X_test)


The second argument in fit should be your labels, the value you want your model to be able to predict. Instead you are inputting X_test, which contains the same features as X_train but with another length, causing your error. You want an y_train with your target value and make it look like this:

pls.fit(X_train, y_train)


But to get this value you will need to get your labels from you dataframe. It is hard to know how without knowing the data, but this might give you an idea:

X = df.drop(['name of label column'], axis=1).iloc[:, :-1].values
y = df['name of label column'].iloc[:, :-1].values

# Split data to train and test on 70-30 ratio
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

pls = PLSRegression(n_components=2)
pls.fit(X_train, y_train)