Использование pandas.DataFrame.mode
:
>>> import numpy as np
>>> import pandas as pd
>>> df = pd.DataFrame({
... 'ID': range(1, 13),
... 'Col_1': [*(['Game 1'] * 4), *(['Game 2'] * 4), *(['Game 3'] * 4)],
... 'Col_2': ['Team 1', 'Team 2'] * 6,
... 'Opt_1': [13, -13, np.nan, np.nan, -7.5, 7.5, np.nan, np.nan, np.nan, np.nan, -1, 1],
... 'Opt_2': [np.nan, np.nan, np.nan, np.nan, -7.5, 7.5, -2.5, 2.5, 3.5, -3.5, -1.5, 1.5],
... 'Opt_3': [np.nan, np.nan, np.nan, np.nan, -7.5, 7.5, -1.5, 1.5, 3.5, -3.5, -1, 1],
... 'Opt_4': [np.nan, np.nan, np.nan, np.nan, -7.5, 7.5, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan],
... 'Opt_5': [np.nan] * 12,
... 'Opt_6': [np.nan] * 12,
... 'Opt_7': [np.nan] * 12
... })
>>> df
ID Col_1 Col_2 Opt_1 Opt_2 Opt_3 Opt_4 Opt_5 Opt_6 Opt_7
0 1 Game 1 Team 1 13.0 NaN NaN NaN NaN NaN NaN
1 2 Game 1 Team 2 -13.0 NaN NaN NaN NaN NaN NaN
2 3 Game 1 Team 1 NaN NaN NaN NaN NaN NaN NaN
3 4 Game 1 Team 2 NaN NaN NaN NaN NaN NaN NaN
4 5 Game 2 Team 1 -7.5 -7.5 -7.5 -7.5 NaN NaN NaN
5 6 Game 2 Team 2 7.5 7.5 7.5 7.5 NaN NaN NaN
6 7 Game 2 Team 1 NaN -2.5 -1.5 NaN NaN NaN NaN
7 8 Game 2 Team 2 NaN 2.5 1.5 NaN NaN NaN NaN
8 9 Game 3 Team 1 NaN 3.5 3.5 NaN NaN NaN NaN
9 10 Game 3 Team 2 NaN -3.5 -3.5 NaN NaN NaN NaN
10 11 Game 3 Team 1 -1.0 -1.5 -1.0 NaN NaN NaN NaN
11 12 Game 3 Team 2 1.0 1.5 1.0 NaN NaN NaN NaN
>>> opts = ['Opt_{}'.format(i) for i in range(1, 8)]
>>> df[opts].mode(axis=1, dropna=False)
0
0 NaN
1 NaN
2 NaN
3 NaN
4 -7.5
5 7.5
6 NaN
7 NaN
8 NaN
9 NaN
10 NaN
11 NaN