我想選擇索引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