2016-08-02 45 views
4

我試圖從Pandas中的multiindex數據框中創建一個引導樣本。下面是一些代碼來生成我需要的那種數據。如何從pandas multiindex中獲取隨機(bootstrap)示例

from itertools import product 
import pandas as pd 
import numpy as np 

df = pd.DataFrame({'group1': [1, 1, 1, 2, 2, 3], 
         'group2': [13, 18, 20, 77, 109, 123], 
         'value1': [1.1, 2, 3, 4, 5, 6], 
         'value2': [7.1, 8, 9, 10, 11, 12] 
         }) 
df = df.set_index(['group1', 'group2']) 

print df 

的DF數據框的樣子:

    value1 value2 
group1 group2     
1  13   1.1  7.1 
     18   2.0  8.0 
     20   3.0  9.0 
2  77   4.0 10.0 
     109  5.0 11.0 
3  123  6.0 12.0 

我想從第一指標的隨機樣本。例如,假設隨機值np.random.randint(3,size=3)產生[3,2,2]。我希望得到的數據幀的樣子:

    value1 value2 
group1 group2     
3  123  6.0 12.0 
2  77   4.0 10.0 
     109  5.0 11.0 
2  77   4.0 10.0 
     109  5.0 11.0 

我花了很多時間研究這個,我一直無法找到一個類似的例子,其中的多指標值是整數,次級索引是可變長度,並且主索引樣本重複。這就是我認爲適合自舉的實施方式。

回答

2

嘗試:

df.unstack().sample(3, replace=True).stack() 

enter image description here