我有一個包含兩列的資料框。如何根據“id”列以 70/30 的比例隨機拆分。因此,盡管 id 7 出現了 3 個值,但它僅按比例計算為 1/10。
如何將資料分成 3 組(訓練、驗證和測驗)?在這種情況下沒有幫助。
import pandas as pd
d = {'id': [1,2,3,3,4,5,6,7,7,7,8,9,10,10], 'col2': [3,4,5,7,8,9,1,5,9,10,11,4,1,7]}
df = pd.DataFrame(data=d)
所以可能的輸出 df1_30 將是:
>>> df1_30
id col2
0 1 3
2 3 5
3 3 7
11 9 4
df1_30 的另一個可能的輸出也可能是(只是為了澄清):
>>> df1_30
id col2
0 1 3
10 8 11
11 9 4
uj5u.com熱心網友回復:
希望下面的代碼能幫到你,len_per 是你擁有的唯一 ID 總數的 30%
import pandas as pd
import random
d = {'id': [1,2,3,3,4,5,6,7,7,7,8,9,10,10], 'col2': [3,4,5,7,8,9,1,5,9,10,11,4,1,7]}
df = pd.DataFrame(data=d)
len_per = int(len(set(df['id'])) / 100 * 30)
ids = random.sample(set(df["id"]), len_per)
df1_30 = df[df["id"].isin(ids)]
df1_70 = df[~df["id"].isin(ids)]
輸出
id col2
1 2 4
5 5 9
11 9 4
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/397436.html
