2016-12-15 53 views
1

我想從「僅」在「標籤」列中的class = 1中抽樣2行。如何從python中的特定類中採樣行數?

在我的代碼,你會看到:

1)我從類樣品的所有行數= 1(4行)

2)然後,我從以前的數據幀樣本2行

但我相信肯定有更好的方法來做到這一點。

# Creation of the dataframe 
df = pd.DataFrame(np.random.rand(12, 5)) 
label=np.array([1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3]) 
df['label'] = label 


# Sampling 
df1=df.loc[df['label'] == 1] #Extract ALL samples with class=1 
df2 = pd.concat(g.sample(2) for idx, g in df1.groupby('label')) #Extract 2 samples from df1 
df2 

enter image description here

enter image description here

回答

3

我只是這樣做:

df1.query('label == 1').sample(2) 

enter image description here

+1

注意,這相當於你已經做什麼(SANS的毫無意義的「groupby」操作)。您已有的解決方案沒有任何問題。 –

相關問題