在训练中拆分数据帧,测试并以%rate进行验证

时间:2020-04-29 00:42:58

标签: python pandas

我有一个数据框df_merged,最后一列是标签(1或0)。 我必须将此数据帧分为3组,一组与train_percent,另一组与其余(1-train_percent)以相同的比率(即0.5*(1-train_percent)) 我可以通过以下代码完成

_df1 = df_merged.query(f"{last_column_name}=='1'")  
len1 = len(_df1)
_df0 = df_merged.query(f"{last_column_name}=='0'")    
len0 = len(_df0)

vali1, tst1, tr1 = np.split(_df1, [int(0.5 * (1 - train_percent) * len1), int((1 - train_percent) * len1)])
vali0, tst0, tr0 = np.split(_df0, [int(0.5 * (1 - train_percent) * len0), int((1 - train_percent) * len0)])
vali_conc, frames2, tr_conc = [vali1, vali0], [tst1, tst0], [tr1, tr0]

但是,如果我的最后一列具有两个以上的值,会发生什么?我想分成3组,并保持数据与最后一列的每个值成比例

1 个答案:

答案 0 :(得分:0)

让我们用for循环groupby

vali_conc=[]
frames2=[]
tr_conc=[]
for x , y in df.groupby('last_column_name'):

    vali1, tst1, tr1 = np.split(y, [int(0.5 * (1 - train_percent) * len1), int((1 - train_percent) * len1)])
    vali_conc.append(vali1)
    frames2.append(tst1)
    tr_conc.append(tr1)