Skip to main content
 首页 » 编程设计

python之选择 pandas 列 'a' 、 'b' 和 'e' 到 'g'

2025年05月04日23jackei

假设我有一个包含“a”、“b”、“c”、“d”、“e”、“f”、“g”列的 pandas 数据框。我想选择“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) 

请您参考如下方法:

使用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