从包含所有行的dataFrame中选择两组列



我有一个28列(功能)和600行(实例)的dataFrame。我想选择所有的行,但只有列从0-12和16-27。这意味着我不想选择列12-15。

我写了下面的代码,但它不起作用,并在0:1216:中的:抛出语法错误。有人能告诉我为什么吗?

X = df.iloc[:,[0:12,16:]]
  • 我知道还有其他的方法来选择这些行,但我很好奇地想知道为什么这个不工作,以及我应该如何写它的工作(如果有一种方法)。

现在,我把它写成:

X = df.iloc[:,0:12]
X = X + df.iloc[:,16:]

似乎返回一个不正确的结果,因为我已经处理了df的NaN值,但是当我使用此代码时,X包含许多NaN !

感谢您的提前反馈。

您可以使用np.r_来连接切片:

x = df.iloc[:, np.r_[0:12,16:]]

iloc有这些允许的输入(来自文档):

  • 整数,如5。
  • 整数列表或数组,例如[4,3,0]。
  • 带有int的切片对象,例如:1:7。
  • 布尔数组。
  • 一个可调用函数,带有一个参数(调用序列或DataFrame),并返回有效的索引输出(上述之一)。这在方法链中很有用,当你没有对调用对象的引用,但想基于一些值来选择时。

X = df.iloc[:,[0:12,16:]]中传递给iloc的不是整型列表或整型切片,而是切片对象列表。您需要将这些切片转换为整数列表,最好的方法是使用numpy.r_函数。

X = df.iloc[:, np.r_[0:13, 16:28]]

最新更新