如何在熊猫数据帧中组合范围和单个/数组列选择



我想选择:

  • 第二列
  • 从第 3 列开始,包括第 3 列在内的每个奇数列也

从熊猫数据帧。熊猫文档提到了以下内容:

  • 一个整数,例如 5。
  • 整数的列表或数组,例如 [4, 3, 0]。
  • 带有整数的切片对象,例如 1:7。
  • 布尔数组。
  • 具有一个参数(调用系列、数据帧或面板(的可调用函数,并返回索引的有效输出(上述值之一(

我的要求似乎是整数和范围对象或数组与范围对象的组合,例如.iloc[:, [2, 3::2]].实现上述目标的最佳和最简单的方法是什么?

我们可以使用 numpy.r_[...]

演示:

In [126]: df = pd.DataFrame(np.random.rand(5, 10), columns=list(range(1, 11)))
In [127]: df
Out[127]:
1         2         3         4         5         6         7         8         9         10
0  0.971111  0.209419  0.266902  0.410897  0.702329  0.199330  0.622634  0.391587  0.357186  0.738886
1  0.195173  0.409414  0.543279  0.090533  0.621940  0.096192  0.050050  0.513417  0.384031  0.191914
2  0.973278  0.825286  0.434370  0.012834  0.694801  0.645579  0.261067  0.240224  0.488762  0.665984
3  0.671826  0.184333  0.773337  0.870569  0.325016  0.871609  0.968624  0.103269  0.347466  0.262120
4  0.268309  0.242649  0.098463  0.979625  0.500496  0.965501  0.544177  0.959747  0.411557  0.979344
In [128]: df.iloc[:, np.r_[1, 2:df.shape[1]:2]]
Out[128]:
2         3         5         7         9
0  0.209419  0.266902  0.702329  0.622634  0.357186
1  0.409414  0.543279  0.621940  0.050050  0.384031
2  0.825286  0.434370  0.694801  0.261067  0.488762
3  0.184333  0.773337  0.325016  0.968624  0.347466
4  0.242649  0.098463  0.500496  0.544177  0.411557

最新更新