将 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 X5
与 dataset.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:]]]
我是 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 X5
与 dataset.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:]]]