Использование:
g = df_scores.groupby('Player').cumcount().add(1)
df = df_scores.set_index(['Player',g]).unstack().sort_index(level=1, axis=1)
df.columns = ['{}-{}'.format(j, i) for i, j in df.columns]
print (df)
1-INNG1 1-INNG2 2-INNG1 2-INNG2 3-INNG1 3-INNG2 4-INNG1 4-INNG2
Player
RAHUL 55.0 35.0 75.0 25.0 NaN NaN NaN NaN
RICKY 75.0 25.0 55.0 45.0 45.0 65.0 17.0 71.0
SACHIN 70.0 50.0 10.0 20.0 NaN NaN NaN NaN
SAURBH 100.0 100.0 NaN NaN NaN NaN NaN NaN
STEVE 7.0 17.0 NaN NaN NaN NaN NaN NaN
df_result = df_team.join(df, on='Player')
print (df_result)
Country Player 1-INNG1 1-INNG2 2-INNG1 2-INNG2 3-INNG1 3-INNG2 \
0 India SACHIN 70.0 50.0 10.0 20.0 NaN NaN
1 India RAHUL 55.0 35.0 75.0 25.0 NaN NaN
2 India SAURBH 100.0 100.0 NaN NaN NaN NaN
3 AUS STEVE 7.0 17.0 NaN NaN NaN NaN
4 AUS SHEN NaN NaN NaN NaN NaN NaN
5 AUS RICKY 75.0 25.0 55.0 45.0 45.0 65.0
4-INNG1 4-INNG2
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 NaN NaN
4 NaN NaN
5 17.0 71.0
Объяснение:
cumcount
MultiIndex
с помощью set_index
, измените форму unstack
и измените порядок первого уровня на sort_index
MultiIndex
по усмотрению списка join
к оригиналу DataFrame