Building upon vlemaistre's answer - you can do it in a more compact way:
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
df = pd.DataFrame({'No.' : ['s1', 's2', 's2'], 'date' : [datetime.now()+timedelta(days=x) for x in range(3)],
'results' : [1.2, 9.73, 3.71]})
joint_df = df.groupby('No.')[['date', 'results']].agg(lambda x: list(x))
result = pd.DataFrame(index=joint_df.index)
for column in df.columns.difference({'No.'}):
result = result.join(pd.DataFrame.from_records(
list(joint_df[column]), index=joint_df.index).rename(lambda x: column+str(x+1), axis=1), how='outer')
Output is:
date1 date2 results1 results2
No.
s1 2019-07-29 12:58:28.627950 NaT 1.20 NaN
s2 2019-07-30 12:58:28.627957 2019-07-31 12:58:28.627960 9.73 3.71