Регулярные выражения - путь. Если до и после первой черты есть только от 1 до 3 символов, это всегда должно работать:
import re
col_list=['GH-TV-G090013', 'GH-ABC-G090011' ,'GH-V-G090000']
groups=[re.search('(\w{1,3}-\w{1,3})', i).group(0) for i in lista]
df.groupby(groups, axis = 1).sum()
Вы должны использовать df.columns
вместо списка, который я использовал, конечно. Если вы не знакомы с регулярными выражениями, пожалуйста, скажите мне, и я могу помочь вам