不包括特定列的数据框列切片

dataframe column slices excluding specific columns

如果我不希望 select 特定且非顺序定位的列,我将如何对具有大量列的 pandas 数据帧进行切片?一种选择是删除特定的列,但我可以做类似的事情吗:

df = pd.DataFrame(np.random.randint(0,100,(2,10)),columns=list('abcdefghij'))
df.iloc[:,~[1,4,9]]

你可以这样做:

In [66]: cols2exclude = [1,4,9]

In [67]: df.iloc[:, df.columns.difference(df.columns[cols2exclude])]
Out[67]:
    a   c   d   f   g   h   i
0  12  37  39  46  22  71  37
1  72   3  17  30  11  26  73

或:

In [68]: df.iloc[:, ~df.columns.isin(df.columns[cols2exclude])]
Out[68]:
    a   c   d   f   g   h   i
0  68  49  90   9  48  36  26
1   6  72  98  49  44  10  36