我想选择索引1处的列,然后选择索引2和5之间的一个随机列。此代码在选择随机列时起作用:在DF和随机列中选择一个特定列(python3,pandas)
train_cols = train.columns[[random.sample(range(2, 5), 1)]]
但是,当我试图在索引1添加“常量”列这是行不通的
train_cols = train.columns[1,[random.sample(range(2, 5), 1)]]
任何帮助将是巨大的!谢谢
我想选择索引1处的列,然后选择索引2和5之间的一个随机列。此代码在选择随机列时起作用:在DF和随机列中选择一个特定列(python3,pandas)
train_cols = train.columns[[random.sample(range(2, 5), 1)]]
但是,当我试图在索引1添加“常量”列这是行不通的
train_cols = train.columns[1,[random.sample(range(2, 5), 1)]]
任何帮助将是巨大的!谢谢
值train.columns
基本上是一维numpy数组,所以你应该看看http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html。
让我们这个阵列为例:
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
现在,random.sample
返回一个列表,让你的第一个命令上面做这样的事情:
In [6]: x[[[2]]]
Out[6]:
array(['c'],
dtype='|S1')
但是,您的第二个命令将执行类似于x[1, [[2]]]
的操作,因为上述#3不起作用的原因不起作用。
你想要的是像x[[1, 2]]
,并获得这将是最好的办法:
In[7]: x[[1, random.randint(2, 4)]]
这将工作,因为random.randint
返回一个整数,而不是一个列表。
让a
是:
a = random.sample(range(2, 5), 1)
由于a
是一个列表,我只想做这一招,使其工作:
train_cols = train.columns[[1,a[0]]]
这适用于一列,但有什么办法让这项工作的多列如果说,train_cols = random.sample(范围(2,5),2) – user3682157
这使得总体感和感谢您的解释 - - 我想知道如何将其推广到其他项目,以及如果我想选择多个随机列(train_cols = random.sample(range(2,5),2) – user3682157
这是否会工作在这种情况下,您可以使用'x [[1] + random.sample(range(2,5),2)]',其中加号连接两个列表。 –
希望我能给你几个upvotes,解释这个解决方案的简单和直接。 – user3682157