Python 3.x 选择DF中的特定列和随机列(python3,pandas)

Python 3.x 选择DF中的特定列和随机列(python3,pandas),python-3.x,pandas,Python 3.x,Pandas,我想在索引1处选择一列,然后在索引2和5之间选择一个随机列。此代码用于选择随机列: train_cols = train.columns[[random.sample(range(2, 5), 1)]] 但当我尝试在索引1中添加“常量”列时,它不起作用 train_cols = train.columns[1,[random.sample(range(2, 5), 1)]] 任何帮助都会很好!谢谢让a成为: a = random.sample(range(2, 5), 1) 因为a是一个列

我想在索引1处选择一列,然后在索引2和5之间选择一个随机列。此代码用于选择随机列:

train_cols = train.columns[[random.sample(range(2, 5), 1)]]
但当我尝试在索引1中添加“常量”列时,它不起作用

train_cols = train.columns[1,[random.sample(range(2, 5), 1)]]
任何帮助都会很好!谢谢

a
成为:

a = random.sample(range(2, 5), 1)
因为
a
是一个列表,所以我只想用这个技巧让它工作:

train_cols = train.columns[[1,a[0]]]

train.columns
基本上是一个一维numpy数组,因此您应该看看

我们以这个数组为例:

In [2]: x = np.array(['a', 'b', 'c', 'd', 'e', 'f'])
(1) 使用整数编制索引将返回该位置的元素:

In [3]: x[3]
Out[3]: 'd'
(2) 使用列表索引将返回给定位置的值数组:

In [4]: x[[3, 5]]
Out[4]: 
array(['d', 'f'], 
      dtype='|S1')
(3) 列表中不包含多个值的索引用于多维数组,因此在本例中不起作用:

In [5]: x[3, 5]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-8-37ec23c8a033> in <module>()
----> 1 x[3, 5]

IndexError: too many indices for array
但是,您的第二个命令将执行类似于
x[1,[[2]]]
的操作,这与上面的第3个命令不起作用的原因相同

您想要的是类似于
x[[1,2]]
的东西,而实现这一点的最佳方法是:

In[7]: x[[1, random.randint(2, 4)]]

这将起作用,因为
random.randint
返回一个整数而不是一个列表。

这对一列有效,但是如果说,train\u cols=random.sample(范围(2,5),2),有没有办法对多列有效这完全有道理,感谢您的解释——我想知道是否可以将其推广到其他项目,如果我想选择多个随机列(train_cols=random.sample(范围(2,5),2),那么这是否可行?在这种情况下,您可以使用
x[[1]+random.sample(范围(2,5),2)]
,其中加号将两个列表连接起来。希望我能给你几张投票,说明这个解决方案是多么简单和直接。
In[7]: x[[1, random.randint(2, 4)]]