Skip to main content
 首页 » 编程设计

python之按标签删除列范围

2025年05月04日1352php

假设我有这个大数据框:

In [31]: df 
Out[31]:  
    A   B   C   D   E   F   G   H   I   J ...   Q   R   S   T   U   V   W   X   Y   Z 
0   0   1   2   3   4   5   6   7   8   9 ...  16  17  18  19  20  21  22  23  24  25 
1  26  27  28  29  30  31  32  33  34  35 ...  42  43  44  45  46  47  48  49  50  51 
2  52  53  54  55  56  57  58  59  60  61 ...  68  69  70  71  72  73  74  75  76  77 
 
[3 rows x 26 columns] 

你可以使用它来创建

alphabet = [chr(letter_i) for letter_i in range(ord('A'), ord('Z')+1)] 
df = pd.DataFrame(np.arange(3*26).reshape(3, 26), columns=alphabet) 

使用列标签删除列 'D' 和 'R' 之间的所有列的最佳方法是什么?

我发现了一种丑陋的方法:

df.drop(df.columns[df.columns.get_loc('D'):df.columns.get_loc('R')+1], axis=1) 

请您参考如下方法:

这是我的条目:

>>> df.drop(df.columns.to_series()["D":"R"], axis=1) 
    A   B   C   S   T   U   V   W   X   Y   Z 
0   0   1   2  18  19  20  21  22  23  24  25 
1  26  27  28  44  45  46  47  48  49  50  51 
2  52  53  54  70  71  72  73  74  75  76  77 

通过将 df.columns 从 Index 转换为 Series,我们可以利用 ["D": "R"]-样式选择:

>>> df.columns.to_series()["D":"R"] 
D        D 
E        E 
F        F 
G        G 
H        H 
I        I 
J        J 
...    ... 
Q        Q 
R        R 
dtype: object