将 Pandas 中的非连续列和连续列切片到 DataFrame 中的最后一列

Slice Non-Contiguous and Contiguous Columns in Pandas to the Last Column in DataFrame

我是 python 的新手,想在 pandas 中获取不连续的列,但似乎可以弄清楚。我知道在 R 中,使用索引时可以像 df[:, c(1, 3:)] 到 select 列 1、3 到列末尾那样完成。只想知道在 python 中是如何使用适用于具有不同列数的不同数据集的通用方法完成的

假设我生成了如下数据:

## generate integer and category/hierarchy data
dataset = pd.DataFrame({'Group': np.random.choice(range(1, 5), 100, replace=True),
                        "y": np.random.choice(range(1, 6), 100, replace=True),
                        "X1": np.random.choice(range(1, 6), 100, replace=True),
                        "X2": np.random.choice(range(1, 6), 100, replace=True),
                        "X3": np.random.choice(range(1, 6), 100, replace=True),
                        "X4": np.random.choice(range(1, 6), 100, replace=True),
                        "X5": np.random.choice(range(1, 6), 100, replace=True)
                      })
dataset.head()

我知道我可以 select 列 0 和 1(组和 y)与 dataset.iloc[:, np.r_[0,1]],我也可以 select 列 Group, X1 through X5dataset.iloc[:, np.r_[0, 2:7]].

    Group   X1      X2          X3         X4   X5
0   2   3.000000    4.000000    5.000000    4.0 2.0
1   2   4.000000    2.000000    2.000000    5.0 3.0
2   1   5.000000    1.000000    3.000000    5.0 1.0
3   4   5.000000    2.986855    2.000000    3.0 4.0
4   1   1.000000    3.000000    5.000000    4.0 1.0
... ... ... ... ... ... ...
95  1   3.000000    3.000000    2.000000    5.0 3.0
96  4   2.964054    4.000000    5.000000    1.0 5.0
97  2   4.000000    3.000000    2.863587    2.0 5.0
98  1   3.000000    3.000000    4.000000    3.0 2.0
99  4   5.000000    2.692210    3.000000    3.0 1.0

我的问题是,是否有更通用的方法使用 np.r_ 函数将 select 列 2: 到最后一列,就像可以在 R [=19= 中完成一样].

numpy:

dataset.iloc[:, np.r_[0, 2:dataset.shape[1]]]

pandas:

dataset[[dataset.columns[0], *dataset.columns[2:]]]