Скажем, у меня есть рамка данных pandas со столбцами 'a', 'b', 'c', 'd', 'e', 'f', 'g'. Я хочу выбрать столбцы "a", "b" и "e" через "g". Я не хочу явно указывать имена столбцов 'e', хотя 'g' как 'e', 'f', 'g' скорее использовать что-то вроде 'e': 'g'. Можно ли объединить эти "a", "b" и "e": "g" в одном?
На данный момент я использую pd.concat()
pd.concat([df[:, 'a', 'b']), df[:, ['e': 'g']]], axis = 1)
С RegEx:
df.loc[:,df.columns.str.match('[ab]|[e-g]')]
Используйте DataFrame.filter
:
df = pd.DataFrame({'a':list('abcdef'),
'b':[4,5,4,5,5,4],
'c':[7,8,9,4,2,3],
'd':[1,3,5,7,1,0],
'e':[5,3,6,9,2,4],
'f':list('aaabbb'),
'g':[0,3,5,7,1,0],
'h':[2,30,50,7,1,0],})
df = df.filter(regex='[ab]|[e-g]')
print (df)
a b e f g
0 a 4 5 a 0
1 b 5 3 a 3
2 c 4 6 a 5
3 d 5 9 b 7
4 e 5 2 b 1
5 f 4 4 b 0
Другое решение:
rng = df.loc[:, 'e': 'g'].columns.tolist()
#alternative
#rng = df.columns[df.columns.get_loc('e'): df.columns.get_loc('g') + 1].tolist()
cols = ['a','b'] + rng
df = df[cols]
print (df)
a b e f g
0 a 4 5 a 0
1 b 5 3 a 3
2 c 4 6 a 5
3 d 5 9 b 7
4 e 5 2 b 1
5 f 4 4 b 0
Основываясь на официальной документации pandas, вы сможете это сделать! Выберите df['e':'g']
.