【问题标题】:How do you combine Range and Individual / Array Columns Selection in Pandas DataFrame如何在 Pandas DataFrame 中组合范围和单个/数组列选择
【发布时间】:2018-01-09 12:43:39
【问题描述】:

我要选择:

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

来自 Pandas 数据框。 Pandas documentation 提到以下内容:

  • 一个整数,例如5.
  • 整数列表或数组,例如[4, 3, 0]。
  • 带有整数的切片对象,例如1:7。
  • 布尔数组。
  • 具有一个参数(调用 Series、DataFrame 或 Panel)并返回有效输出以进行索引的可调用函数(上述之一)

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

【问题讨论】:

  • .iloc[3::2, 2]怎么样
  • @ksai 不是第三栏吗?
  • from the 3rd row onwards every odd column - 你是说from the 3rd __column__ onwards every odd column 吗?
  • 第 2 列 + 从第 3 列开始的每个奇数列,包括第 3 列

标签: python pandas dataframe slice


【解决方案1】:

我们可以使用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

【讨论】:

  • 这个好像没有第2列
  • @SumindaSirinathS.Dharmasena,我已经更新了我的帖子 - 请检查
猜你喜欢
  • 2017-05-06
  • 1970-01-01
  • 2018-08-26
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 2012-06-13
  • 2015-01-17
  • 1970-01-01
相关资源
最近更新 更多