2017-05-04 109 views
2

我有一個按列數排序的熊貓數據框。現在我想按預定義的百分比分割數據幀,以便提取並命名一些段。如何以預定義的百分比在熊貓中分割數據框?

例如,我想先取20%的行來創建第一個分段,然後是第二個分段的下一個30%,剩下的50%留給第三個分段。

我該怎麼做到這一點?

+0

相關:https://stackoverflow.com/questions/38250710/how-to-split-data-into-3-sets- train-validation-and-test刪除'.sample'或'random'步驟並且它是相同的解決方案 – EdChum

回答

0

使用numpy.split

a, b, c = np.split(df, [int(.2*len(df)), int(.5*len(df))]) 

樣品:

np.random.seed(100) 
df = pd.DataFrame(np.random.random((20,5)), columns=list('ABCDE')) 
#print (df) 

a, b, c = np.split(df, [int(.2*len(df)), int(.5*len(df))]) 
print (a) 
      A   B   C   D   E 
0 0.543405 0.278369 0.424518 0.844776 0.004719 
1 0.121569 0.670749 0.825853 0.136707 0.575093 
2 0.891322 0.209202 0.185328 0.108377 0.219697 
3 0.978624 0.811683 0.171941 0.816225 0.274074 

print (b) 
      A   B   C   D   E 
4 0.431704 0.940030 0.817649 0.336112 0.175410 
5 0.372832 0.005689 0.252426 0.795663 0.015255 
6 0.598843 0.603805 0.105148 0.381943 0.036476 
7 0.890412 0.980921 0.059942 0.890546 0.576901 
8 0.742480 0.630184 0.581842 0.020439 0.210027 
9 0.544685 0.769115 0.250695 0.285896 0.852395 

print (c) 
      A   B   C   D   E 
10 0.975006 0.884853 0.359508 0.598859 0.354796 
11 0.340190 0.178081 0.237694 0.044862 0.505431 
12 0.376252 0.592805 0.629942 0.142600 0.933841 
13 0.946380 0.602297 0.387766 0.363188 0.204345 
14 0.276765 0.246536 0.173608 0.966610 0.957013 
15 0.597974 0.731301 0.340385 0.092056 0.463498 
16 0.508699 0.088460 0.528035 0.992158 0.395036 
17 0.335596 0.805451 0.754349 0.313066 0.634037 
18 0.540405 0.296794 0.110788 0.312640 0.456979 
19 0.658940 0.254258 0.641101 0.200124 0.657625 
+0

爲什麼這個問題不是這個問題的一個騙局:https://stackoverflow.com/questions/38250710/how-to-分割數據到-3-套列車驗證與測試? – EdChum

+0

因爲有隨機化,所以這個解決方案沒有。但是是相似的。 – jezrael

+0

我仍然認爲這是一個相關的愚蠢,隨機化步驟的刪除是微不足道的IMO – EdChum