Я думаю, что проще всего выбрать все столбцы, которые не начинаются с номера, на filter
с regex
- ^
для начала строки, а \D
для не числа:
df1 = df.filter(regex='^\D')
Аналогичная альтернатива:
df1 = df.loc[:, df.columns.str.contains('^\D')]
Или обратное условие и выберите числа:
df1 = df.loc[:, ~df.columns.str.contains('^\d')]
df1 = df.loc[:, ~df.columns.str[0].str.isnumeric()]
Если хотите использовать свой псевдокод:
for col in df.columns:
if col[0].isnumeric():
df = df.drop(col, axis=1)
Sample
df = pd.DataFrame({'2A':list('abcdef'),
'1B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D3':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
'F':list('aaabbb')})
print (df)
1B 2A C D3 E F
0 4 a 7 1 5 a
1 5 b 8 3 3 a
2 4 c 9 5 6 a
3 5 d 4 7 9 b
4 5 e 2 1 2 b
5 4 f 3 0 4 b
df1 = df.filter(regex='^\D')
print (df1)
C D3 E F
0 7 1 5 a
1 8 3 3 a
2 9 5 6 a
3 4 7 9 b
4 2 1 2 b
5 3 0 4 b