Вы можете использовать Numpy np.where для этого:
import numpy as np
...
df['x'] = np.where(df['player_num'] < 5, df['team_1.x'], df['team_2.x'])
df['y'] = np.where(df['player_num'] < 5, df['team_1.y'], df['team_2.y'])
РЕДАКТИРОВАТЬ:
# Extract column names and remove prefix to get a list of x,y,z, etc.
cols = [col.split('.')[1] for col in list(df) if 'team_' in col]
# Loop over and create new column for each prefix (x, y, z, etc)
for col in cols:
col1 = 'team_1.' + col
col2 = 'team_2.' + col
df[col] = np.where(df['player_num']<5, df[col1], df[col2])