Используйте groupby
с level=0
и axis=1
.
df.groupby(level=0, axis=1).mean()
np.random.seed(0)
df = pd.DataFrame(np.random.choice(10, (3, 5)), columns=list('AAABB'))
df
A A A B B
0 5 0 3 3 7
1 9 3 5 2 4
2 7 6 8 8 1
df.groupby(level=0, axis=1).mean()
A B
0 2.666667 5.0
1 5.666667 3.0
2 7.000000 4.5