Используйте 2 groupby, чтобы получить результат:
import pandas as pd
df = pd.DataFrame( {'Id' :[43,44,45,46,47,48,49,50,51,52,53],
'TeamId':[504,504,601,602,602,605,777,777,788,789,100],
'UserId':[722,727,300,722,727,300,300,301,400,400,727]})
df_grouped = df.groupby('TeamId')['UserId'].apply(tuple).to_frame().reset_index()
df_grouped = df_grouped.groupby('UserId')['TeamId'].apply(tuple).to_frame().reset_index()
print(df_grouped)
результат:
UserId TeamId
0 (300,) (601, 605)
1 (300, 301) (777,)
2 (400,) (788, 789)
3 (722, 727) (504, 602)
4 (727,) (100,)
просто итерируйте столбец TeamId, чтобы установить номер команды ...